2014-08-01 2 views
1

Я пытаюсь предотвратить XSS в моих поисковых формах. Я добавил это, чтобы избежать символов HTML, но это не работает. Есть идеи?Как предотвратить XSS в формах поиска?

$input = htmlspecialchars($input, ENT_QUOTES); 

Это форма поиска у меня есть

<form action="search.php" method="get"> 
    <input type="text" name="q" value="search" /> 
    <input type="submit" value="send" /> 
</form> 
+1

Определить, что «не работает». Каково ожидаемое поведение? Что вы получаете вместо этого? –

ответ

0

Вы должны использовать функцию htmlspecialchars() всякий раз, когда вы хотите вывести что-то в браузере, который пришел от пользователя input.The самое главное, Sanitize введенный пользователем.

Вы также можете использовать filter_var().

Source

+0

исправлено по запросу ur ..thanks –

+0

'htmlspecialchars()' также небезопасно. Если выход страницы не установлен в UTF-7 или UTF-8 –

+0

Итак, если нужно закодировать URL-адрес формы, я могу использовать ПРАВИЛО №5 OWSAP? Пожалуйста, проверьте вопрос, который я опубликовал [XSS для URL-адреса формы] (http://stackoverflow.com/questions/27655638/how-to-prevent-xss-for-the-form-action-url) –

0

XSS обычно относится к тому, когда кто-то может вставить HTML в вашу страницу, которая может произойти, когда вы выводите пользовательский ввод без кодирования его первым. Чтобы этого избежать, используйте htmlspecialchars() при вводе пользовательского ввода. Я иногда определить две функции, как это:

function he($s) { 
    return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); 
} 
function eh($s) { 
    echo he($s); 
} 

Затем, когда вы хотите повторить ввод данных пользователем, выполните следующие действия:

eh($user_input); 

вместо этого:

echo $user_input; 
+0

В частности, для UTF- 8. Выше кода уязвим в UTF-7. –

0

Согласно OWASP:

... HTML-код encodin g не работает, если вы помещаете недоверенные данные внутри тега в любом месте или атрибут обработчика события, например onmouseover или внутри CSS, или в URL. Поэтому, даже если вы используете метод кодирования объектов HTML повсюду, вы по-прежнему наиболее уязвимы для XSS. Вы ДОЛЖНЫ использовать синтаксис escape для части HTML-документа, в который вы помещаете недоверенные данные.

В соответствии с этим answer:

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

Читать seven rules по OWASP:

  • ПРАВИЛО # 0 - не вставляйте Подозрительные данных, за исключением разрешенных местоположений
  • ПРАВИЛО # 1 - HTML Побег Перед Вставка Ненадежных данных в HTML элемент контента
  • ПРАВИЛО № 2 - Атрибут Escape перед вставкой ненадежных данных в HTML Общие атрибуты
  • RULE # 3 - JavaScript Escape перед тем, как вставить ненадежные данные в значения данных JavaScript
  • ПРАВИЛО # 4 - CSS побег и строго Проверка Перед Вставка Ненадежных данных в HTML Style Значения свойств
  • Правило № 5 - URL побег Перед Вставка Ненадежных данных в HTML URL Значения параметров
  • ПРАВИЛО # 6 - дезинфицировать HTML Markup с библиотека, Предназначен для задания
  • ПРАВИЛО # 7 - предотвращение DOM на основе XSS

профилактика XSS не простая тема. Хорошей отправной точкой являются исходные материалы на веб-сайте Open Web Application Security Project (OWASP).

0

echo htmlentities ($ string, ENT_QUOTES | ENT_HTML5, 'UTF-8'); это безопасный и эффективный способ остановить все атаки XSS на кодированной веб-странице UTF-8, но не позволяет использовать какой-либо HTML-код.

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