HTML Purifier - что очищать? - PullRequest
11 голосов
/ 31 июля 2009

Я использую HTML Purifier для защиты своего приложения от атак XSS. В настоящее время я очищаю контент от редакторов WYSIWYG, потому что это единственное место, где пользователям разрешено использовать разметку XHTML.

У меня вопрос, должен ли я использовать HTML Purifier также для имени пользователя и пароля в системе аутентификации входа (или для полей ввода страницы регистрации, таких как электронная почта, имя, адрес и т. Д.)? Есть ли вероятность атаки XSS там?

Ответы [ 4 ]

13 голосов
/ 31 июля 2009

Вы должны очистить все, что когда-либо будет отображаться на странице. Потому что при атаках XSS хакеры вставляют теги <script> или другие вредоносные теги, которые могут ссылаться на другие сайты.

Пароли и электронные письма должны быть в порядке. Никогда не следует показывать пароли, а электронные письма должны иметь собственный валидатор, чтобы убедиться, что они в правильном формате.

Наконец, всегда не забывайте добавлять htmlentities () к содержимому.

Ох .. и посмотрите на filter_var , а также. Очень хороший способ фильтрации переменных.

3 голосов
/ 31 июля 2009

XSS-риски существуют, когда данные, введенные одним пользователем, могут быть просмотрены другими пользователями. Даже если эти данные в настоящее время недоступны для просмотра, не думайте, что необходимость в этом не возникнет.

Что касается имени пользователя и пароля, вы никогда не должны отображать пароль или даже сохранять его в форме, которая может быть отображена (т. Е. Кодировать его с помощью sha1()). Для имен пользователей есть ограничение на допустимые символы, такие как [A-Za-z0-9_]. Наконец, как предлагает другой ответ, используйте функцию кодирования сущности html вашего языка для любых введенных данных, которые могут содержать зарезервированные или специальные html-символы, что предотвращает появление этих данных при синтаксических ошибках при отображении.

1 голос
/ 04 января 2016

Нет, я не буду использовать HTMLPurifier для имени пользователя и пароля во время аутентификации при входе. В своих приложениях я использую буквенно-цифровые имена пользователей и фильтр проверки ввода и отображаю их с помощью htmlspecialchars и ENT_QUOTES. Это очень эффективно и намного быстрее, чем HTMLpurifier. Мне еще предстоит увидеть XSS-атаку с использованием буквенно-цифровой строки. А BTW HTMLPurifier бесполезен при фильтрации буквенно-цифрового содержимого, так что если вы вводите строку ввода через буквенно-цифровой фильтр, то нет смысла отображать ее с помощью HTMLpurifier. Когда дело доходит до паролей, они никогда не должны отображаться никому, во-первых, что исключает возможность XSS. И если по какой-то извращенной причине вы хотите отобразить пароли, то вы должны разработать свое приложение таким образом, чтобы оно было доступно только владельцу пароля, иначе вы облажались бы долго, а XSS - наименьшее ваше беспокойство!

0 голосов
/ 16 ноября 2017

HTML Purifier принимает HTML в качестве входных данных и создает HTML в качестве выходных данных. Его цель - разрешить пользователю вводить html с некоторыми тегами, атрибутами и значениями, одновременно отфильтровывая другие. При этом используется белый список для предотвращения любых данных, которые могут содержать сценарии. Так что это полезно для чего-то вроде редактора WYSIWYG.

Имена пользователей и пароли, с другой стороны, не HTML . Они простой текст , поэтому очиститель HTML не вариант. Попытка использовать HTML-очиститель здесь либо повредит данные, либо разрешит атаки XSS.

Например, он пропускает следующее без изменений, что может вызвать проблемы XSS при вставке в качестве значения атрибута в некоторые элементы:

" onclick="javascript:alert()" href="

Или если кто-то попытался использовать специальные символы в своем пароле и ввел:

<password

тогда их пароль станет пустым, и его будет намного легче угадать.

Вместо этого вы должны закодировать текст. Требуемая кодировка зависит от контекста, но вы можете использовать htmlentities при выводе этих значений, если вы придерживаетесь rule # 0 и rule # 1 , на OWASP XSS Профилактическая шпаргалка

...