У меня есть веб-сайт с несколькими страницами с HTML-формами. Но меня засыпают странными данными, которых нет в поле. Пример:
\'\"><svg/onload=(new(Image)).src=\'//rytk88vs0h2tc4yierrvrpgr2i8lwdm1eo8cx\\56burpcollaborator.net\
Но это должно быть
<select><option></option></select>
Это не поле для ввода текста. Так как же человек отправляет странный код выше? Как я могу предотвратить это?
Вы должны использовать htmlentities
@ Script47 Хорошее начало для чего?
@KhrisnaGunanasurya, рекомендуется использовать htmlspecialchars, если вы хотите сохранить символы «значимые» для HTML.
@proofzy, чтобы узнать о безопасности в PHP? На связанной странице содержится обширный массив информации о безопасности и о том, как преодолеть такую небезопасность.
@ Script47 как насчет использования htmlentities($str, ENT_QUOTES);?
Возможный дубликат Как предотвратить XSS с помощью HTML / PHP?
@KhrisnaGunanasurya stackoverflow.com/q/46483/2263631
@ Script47 Понятно, спасибо!






\'\"><svg/onload=(new(Image)).src=\'//rytk88vs0h2tc4yierrvrpgr2i8lwdm1eo8cx\\56burpcollaborator.net\
Это попытка XSS-атаки.
So how is the person submitting weird code above?
… НО ничто не мешает кому-то использовать какой-либо другой метод для создания HTTP-запроса и отправки его на ваш сервер.
How can I prevent this?
Вы не можете контролировать, что люди отправляют на ваш сервер.
Вы можете только принять меры, чтобы предотвратить его вред.
Существует множество документации о том, как защититься от SQL-инъекций, XSS и CSRF (которые являются наиболее распространенными атаками).
Как упоминалось в цепочке комментариев OP, Шпаргалка по безопасности PHP от OWASP - отличный ресурс для общих уязвимостей безопасности.
это попытка инъекции собственности. вы всегда должны проверять, какие значения ваша форма отправляет при отправке. в этом случае вы, вероятно, ожидаете идентификатор, поскольку это выбор. простой способ проверить, действительно ли он действителен:
$alloptions = array(1 => 'Option A', 2 => 'Option B');
if (isset($_POST['select'])){
if (!array_key_exists($_POST['select'], $alloptions)){
echo 'error';
}
}
foreach($alloptions as $optionid => $optionname){
echo '<option value = "'.$optionid.'">'.$optionname.'</option>;
}