0
$text = "(= \" ' & \\ </textarea> : ; . " ;
echo htmlentities($text);
//outputs as -->> (= " ' & \ </textarea> : ; .
//obviously, htmlentities does nothing to () = ; and .
htmlentities - хорошая линия защиты, но это не помогает в контекстах javascript.XSS и htmlentities
не было бы написать собственную функцию htmlencode для дальнейшего обеспечения соблюдения(). ; и = персонажи должны быть encoed также?
Таким образом, одна функция сделает вас безопасным по всем направлениям. Я хочу услышать, есть ли проблемы с этим подходом.
Я предполагаю, что вы не можете править javascript, который навредил бы вам, не используя один из следующих 4 символов, которые (.); знак равно
Вы помещаете созданный пользователем контент в тег '
Вам нужны различные кодировки на основе контекста. Нет универсального кодера, который мог бы обрабатывать все сразу. Это не символы, которые опасны, это контекст, они интерпретируются в.
Значения в JavaScript требуют
json_encode($value)
(другие функции, такие какaddslashes()
не будет обрабатывать все крайние случаи.json_encode
ускользает</
в соответствии с требованиями HTML<script>
).Значения в JavaScript в атрибутах HTML требуют:
htmlspecialchars(json_encode($value))
, потому что каждый «слой» синтаксиса делает свое собственное декодирование при интерпретации данных.источник
2012-03-26 20:59:51 Kornel