XSS нападают для обхода htmlspecialchars () функция в атрибуте значения

Изменения в вашем коде:

  • Дать accessoryView height
  • Удалить var myView: customUIView & amp; все viewDidLoad() переопределяют
23
задан L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳ 24 May 2010 в 03:27
поделиться

3 ответа

Также важно упомянуть, что позволяя людям вставлять HTML или JavaScript на вашу страницу ( а не ваш источник данных) сам по себе не несет никакой угрозы безопасности. Уже существуют расширения браузера, которые позволяют изменять DOM и сценарии на веб-страницах, но, поскольку это только на стороне клиента, они единственные, кто будет знать.

XSS становится проблемой, когда люди а) используют его для обхода проверки на стороне клиента или фильтрации ввода или б) когда люди используют его для управления полями ввода (например, изменение значений тегов OPTION в ACL для предоставления их разрешения, которых у них не должно быть). ЕДИНСТВЕННЫЙ способ предотвратить эти атаки - это очистить и проверить ввод на стороне сервера вместо или в дополнение к проверке на стороне клиента.

Для очистки HTML от ввода вполне достаточно htmlspecialchars, если только вы не ХОТИТЕ разрешить определенные теги, и в этом случае вы можете использовать такую ​​библиотеку, как HTMLPurifier. Если вы помещаете вводимые пользователем данные в HREF, ONCLICK или в любой другой атрибут, разрешающий создание сценариев, вы просто напрашиваетесь на проблемы.

РЕДАКТИРОВАТЬ: Глядя на ваш код, похоже, что вы не цитируете свои атрибуты! Это довольно глупо.Если кто-то поместит свое имя пользователя как:

john onclick="alert('hacking your megabits!1')"

, тогда ваш сценарий будет анализировать как:

<input type=text name=username value=john onclick="alert('hacking your megabits!1')">

ВСЕГДА используйте кавычки вокруг атрибутов. Даже если они не вводятся пользователем, это хорошая привычка.

<input type="text" name="username" value="<?php echo htmlspecialchars($_POST['username']); ?>">
16
ответ дан 29 November 2019 в 02:44
поделиться

Есть один способ. Вы не передаете htmlspecialchars () третий параметр кодирования или правильно проверяете кодировку, поэтому:

$source = '<script>alert("xss")</script>';
$source = mb_convert_encoding($source, 'UTF-7');
$source = htmlspecialchars($source); //defaults to ISO-8859-1
header('Content-Type: text/html;charset=UTF-7');
echo '<html><head>' . $source . '</head></html>';

Работает только в том случае, если вы можете: а) настроить страницу на вывод UTF-7 или б) обмануть страницу в при этом (например, iframe на странице без четкого набора символов). Решение состоит в том, чтобы гарантировать, что все входные данные имеют правильную кодировку, и что ожидаемая кодировка правильно установлена ​​в htmlspecialchars ().

Как это работает? В UTF-7 символы <> "имеют разные кодовые точки, чем UTF-8 / ISO / ASCII, поэтому они не могут быть экранированы, если для гарантии не преобразовать вывод в UTF-8 (см. Расширение iconv).

10
ответ дан Frank Farmer 29 November 2019 в 02:44
поделиться

value является обычным атрибутом HTML и не имеет ничего общего с Javascript.
Поэтому String.fromCharCode интерпретируется как буквальное значение и не выполняется.

Чтобы внедрить скрипт, сначала необходимо заставить синтаксический анализатор закрыть атрибут, что будет трудно сделать без >'".

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

Даже если вы цитируете значение, оно все равно может быть уязвимым; см. на этой странице .

1
ответ дан SLaks 29 November 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: