2012-03-26 10 views
0
$text = "(= \" ' & \\ </textarea> : ; . " ; 

echo htmlentities($text); 

//outputs as -->>  (= &quot; ' &amp; \ &lt;/textarea&gt; : ; . 

//obviously, htmlentities does nothing to () = ; and . 

htmlentities - хорошая линия защиты, но это не помогает в контекстах javascript.XSS и htmlentities

не было бы написать собственную функцию htmlencode для дальнейшего обеспечения соблюдения(). ; и = персонажи должны быть encoed также?

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

Я предполагаю, что вы не можете править javascript, который навредил бы вам, не используя один из следующих 4 символов, которые (.); знак равно

+0

Вы помещаете созданный пользователем контент в тег '

0

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

Значения в JavaScript требуют json_encode($value) (другие функции, такие как addslashes() не будет обрабатывать все крайние случаи. json_encode ускользает </ в соответствии с требованиями HTML <script>).

Значения в JavaScript в атрибутах HTML требуют: htmlspecialchars(json_encode($value)), потому что каждый «слой» синтаксиса делает свое собственное декодирование при интерпретации данных.

Смежные вопросы