Является ли addlashes () безопасным для предотвращения XSS в атрибуте HTML? - PullRequest
4 голосов
/ 02 декабря 2011

Мне приходится работать над старым веб-приложением, оставленным предыдущим разработчиком.Он использует addlashes () для предотвращения XSS в атрибуте HTTML.

Вот пример:

<?php
  // all $_POST vars are put through addslashes()

  echo "<input type='hidden' value='" . $_POST['id'] . "' />";
?>

Уязвимо ли это для XSS?Есть ли способ, которым javascript может работать в атрибуте значения, как он может в атрибуте src, например, src = 'javascript: alert (99)'.Или можно вырвать атрибут value и затем вставить теги сценария?

Редактировать: Благодаря Квентину, я считаю, что он уязвим.

Ответы [ 2 ]

8 голосов
/ 02 декабря 2011

Безопасен ли addlashes () для предотвращения XSS в атрибуте HTML?

Это крайне неэффективно.

Это уязвимо для XSS?

Да.

Есть ли способ, которым javascript может работать в атрибуте значения, как он может в атрибуте src, например, src = 'javascript: alert (99)'.

нет

Нет

Или атрибут значения может быть разорван, а затем могут быть вставлены теги сценария?

Данные просто должны включать ", и атрибут обрывается.

Используйте htmlspecialchars, если вы хотите вставить произвольную строку в значение атрибута.

3 голосов
/ 02 декабря 2011

addslashes() не подходит для этой задачи.Вместо этого используйте htmlspecialchars() или htmlentities(), например,

<input type="hidden"
       value="<?php echo htmlspecialchars($_POST['id'], ENT_QUOTES, 'UTF-8') ?>">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...