Все ли движки браузера воспринимают "\ <" как "<", а "\>" как ">"? - PullRequest
1 голос
/ 30 апреля 2009

Главное, чтобы сделать "<" для "\ <" и ">" для ">", это сделать так, чтобы избежать ниже встроенного скрипта:

<script>
   var foo = "</script><script>alert('bug');</script><script>"; // the value of foo is generated from server
</script>

Строковое значение foo генерируется со стороны сервера. Итак, мы планируем изменить "<" на "\ <" и ">" на ">". (Я знаю, что есть аргумент, что ">" следует экранировать до "& gt;", но в данном случае это не рассматривается.)

Итак, ожидаемый результат:

<script>
   var foo = "\</script\>\<script\>alert('bug');\</script\>\<script\>"; // the value of foo is generated from server
</script>

Для IE7 / 8 и Firefox механизм рендеринга HTML не будет обрабатывать \ в строке javascript как тег , а механизм JavaScript по-прежнему будет воспринимать его как строка "". Однако я не уверен, что все браузеры обрабатывают «>» и «\ <» таким образом. Это стандарт для всех браузеров? </p>

1 Ответ

5 голосов
/ 30 апреля 2009

Нет, лучше всего использовать & gt; и & lt; для знаков больше и меньше соответственно.

Итак, вы бы хотели что-то вроде этого:

var foo = "&lt;/script&gt;&lt;script&gt;alert('bug');&lt;/script&gt;&lt;script&gt;";
...