PHP: безопасность. Что такое XSS.
Всем привет! В этой статье мы рассмотрим, что такое XSS-атака и как от нее защититься.
Что такое XSS?
XSS(Cross Site Scripting) - межсайтовый скриптинг. С помощью XSS-уязвимостей обычно злоумышленники крадут cookies пользователей, используя вставки javascript кода. Данный вид атаки практически безопасен для сервера, но очень опасен для пользователей.
Как защититься от XSS?
Обычно подобную уязвимость можно найти в формах или в get запросах. Например, у нас есть форма поиска на сайте. Попробуйте ввести туда подобную команду:
<script>
alert('cookies: ' + document.cookie)
</script>
Если вы увидите всплывающее окно с информацией о cookies, значит форма подвержена атаке.
То же самое можно проделать и для get запросов. Просто подставьте вместо нужного значения уже известную нам команду:
http://site.ru/script?query=<script>alert('cookies: ' + document.cookie)
На самом деле существуют многие разновидности кода, встраивая который в формы или запросы можно получить доступ к информации на сайте, но нам, как разработчикам, важно не это, а то, как от этой атаки защититься. Давайте об этом и поговорим.
Как защититься от XSS?
Чтобы защититься от XSS, нужно просто заменить все опасные символы на безопасные.
$strainer = array("<", ">");
$_GET['query'] = str_replace($strainer, "|", $_GET['query']);
Чтобы использовать стрейнер для каждого символа, можно написать функцию:
function xss_cleaner($array) {
$strainer = array("<", ">");
foreach($array as $num => $xss) {
$array[$num] = str_replace($strainer, "|", $xss);
}
return $array;
}
$_REQUEST = xss_cleaner($_REQUEST);
Итак, на этом все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (4):
ошибка $strainer = array("<", ">"); $_GET['query'] = str_replace($filter, "|", $_GET['query']); в переменных )))
Ответить
Потому что вы написали вместо переменную $strainer, переменную $filter
Ответить
Просто оставлю это здесь http://prntscr.com/93dpia
Ответить
Я думал в конце будет весь сайт((( А где его можно скачать готовый?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.