Предотвращение XSS в правильном направлении - PullRequest
0 голосов
/ 25 марта 2012

Я знаю, что для предотвращения XSS нам нужно учитывать контекст.

когда мы делаем echo $ userinput; нам нужно знать о том факте, что если эти входные данные входят в значение текстового поля, или в значение текстовой области, или в область html деления и так далее.

Я бы хотел упростить бизнес эхо, чтобы я мог использовать одну функцию для большинства моих потребностей в эхо. Имея это в виду, я собрал следующую функцию, но я не уверен, стоит ли полагаться на нее.

Конечно, я сделал несколько предположений. То есть я всегда использую встроенный urlencode для URL. И я религиозно разграничиваю атрибуты либо ', либо'.

Имея это в виду, могу ли я использовать указанное ниже безопасное эхо в отличие от простого эха для предотвращения XSS?

function safeecho($str)
{

    return htmlentities($str, ENT_QUOTES, "UTF-8");

}

В одном я не уверен, это контекст <Style>. Я видел, как люди говорили о проблеме «выражений» в таблицах стилей. Я не уверен, как это происходит, хотя. Но так как я не планирую выводить userinput в середине таблицы стилей или javascript, меня это не сильно волнует! Когда я обнаружил, что мне нужно вывести пользовательский ввод в области js или в таблице стилей, я не буду использовать эту функцию. Но я все еще заинтересован в ваших комментариях относительно того, как справляться с этим контекстом. Но, опять же, я , в основном , беспокоюсь об общих вещах, таких как HTML и объекты форм.

Суть вопроса в том, чтобы заставить utf8 и ent_quotes, я в безопасности?

1 Ответ

0 голосов
/ 25 марта 2012

Убегает ли человечество? Если так, то это должно быть в основном хорошо. Всегда есть проблема javascript: URL-адреса, с которыми вам нужно справиться. Также помните, что html-атрибуты, такие как onclick, на самом деле являются javascript, поэтому ваша функция там не будет действовать. Вы должны будете сделать JS побег. См. Шпаргалку по профилактике OWASP xss. Что касается CSS, избегайте размещения там пользовательских данных, если можете. Это требует подхода валидации значения ключа на основе белого списка.

...