Санитайзер HTML
Работа с санитайзером HTML
Санитайзер позволяет определить потенциально вредоносный код HTML. При проверке кода используется принцип позитивной модели безопасности: "что не разрешено – то запрещено".
Допустимые действия в HTML описаны ниже.
Допустимые элементы
- article, aside
- figure
- section
- summary
- Заголовки: h1, h2, h3, h4, h5, h6
- hgroup
- br, div, hr, p, span, wbr
- Строковые элементы для работы с текстом: abbr, acronym, cite, code, dfn, em, figcaption, mark, s, samp, strong, sub, sup, var
- Блочные и строковые элементы, не влияющие на семантику документа, но определяющие стиль: b, i, pre, small, strike, tt, u
- rp, rt, ruby
Помимо тегов выше допустимы списки, таблицы и изображения
Работа с URL
- Допустимы стандартные схемы http, https, mailto;
- Допустимы относительные ссылки;
- При описании ссылок атрибут
rel="nofollow"не требуется;
Работа с атрибутами
Для всех элементов допустимы атрибуты:
- dir (допустимы значения, удовлетворяющие регулярному выражению (?i)^(rtl|ltr)$)
- id (допустимы значения, удовлетворяющие регулярному выражению [a-zA-Z0-9\:\-_\.]+)
- title (значения, удовлетворяющие ^[\p{L}\p{N}\s\-_',\[\]!\./\\\(\)]*$)
- align
- style
- color
- controls
- height
- id
- src
- target
- title
- type
- width
Для элемента details доступен атрибут open со значениями, удовлетворяющими регулярному выражению (?i)^(|open)$.
Для элемента blockquote доступен атрибут cite.
Для элемента map доступен атрибут name со значениями, удовлетворяющими регулярному выражению ^([\p{L}\p{N}_-]+)$.
Для элемента area:
- Доступен атрибут alt со значениями, удовлетворяющими регулярному выражению ^[\p{L}\p{N}\s\-_',\[\]!\./\\\(\)]*$;
- Доступен атрибут coords со значениями, удовлетворяющими регулярному выражению ^([0-9]+,)+[0-9]+$;
- Доступен атрибут rel;
- Доступен атрибут shape со значениями, удовлетворяющими регулярному выражению (?i)^(default|circle|rect|poly)$;
Для элемента img доступен атрибут usemap со значениями, удовлетворяющими регулярному выражению (?i)^#[\p{L}\p{N}_-]+$.
Для элементов bdi и bdo доступен атрибут dir со значениями удовлетворяющими регулярному выражению (?i)^(rtl|ltr)$.
Для элементов del, ins:
- Доступен атрибут cite со значениями удовлетворяющими регулярному выражению ^[\p{L}\p{N}\s\-_',\[\]!\./\\\(\)]*$;
- Доступен атрибут datetime со значениями, удовлетворяющими стандарту ISO8601 (^[0-9]{4}(-[0-9]{2}(-[0-9]{2}([ T][0-9]{2}(:[0-9]{2}){1,2}(.[0-9]{1,6}) + ?Z?([\+-][0-9]{2}:[0-9]{2})?)?)?)?$);
Для элемента meter доступны атрибуты value, min, max, low, high, optimum со значениями, удовлетворяющими регулярному выражению ^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$.
Для элемента progress доступны атрибуты value, max со значениями, удовлетворяющими регулярному выражению ^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$.