7.0 KiB
title | localeTitle |
---|---|
Cross Site Scripting | Скрипты для сайта |
Скрипты для сайта
Cross Site Scripting - это тип уязвимости в веб-приложении, вызванный тем, что программист не дезинфицирует входные данные перед выдачей ввода в веб-браузер (например, комментарий к блогу). Он обычно используется для запуска вредоносного javascript в веб-браузере для совершения таких атак, как кража сеансовых файлов cookie среди других вредоносных действий для получения привилегий более высокого уровня в веб-приложении.
Пример атаки на скрипт
Блог позволяет пользователям создавать свои комментарии с помощью HTML-тегов, однако сценарий, запускающий блог, не выделяет теги <script>
позволяющие любому пользователю запускать javascript на странице. Злоумышленник может использовать это в своих интересах для запуска вредоносного javascript в браузере. Они могут заражать пользователей вредоносным ПО, кражи сеансовых файлов и т. Д.
<script>
alert('Cross Site Scripting!');
</script>
Защита вашего сайта от межсайтовых скриптовых атак в PHP
В PHP есть две основные функции: htmlspecialchars()
и strip_tags()
, встроенные для защиты от атак с межсайтового скриптинга.
Функция htmlspecialchars($string)
предотвратит отображение HTML-строки в виде HTML и отображение ее в виде обычного текста в веб-браузере. Пример кода htmlspecialchars ()
<?php
$usercomment = "<string>alert('Cross Site Scripting!');</script>";
echo htmlspecialchars($usercomment);
Другим подходом является strip_tags($string, $allowedtags)
которая удаляет все теги HTML, за исключением HTML-тегов, которые вы указали в белый список. Важно отметить, что с помощью функции strip_tags()
вы должны быть более осторожны, эта функция не мешает пользователю включать javascript в качестве ссылки, вам придется самостоятельно дезинформировать его.
Пример примера strip_tags ()
<?php
$usercomment = "<string>alert('Cross Site Scripting!');</script>";
$allowedtags = "<p><a><h1><h2><h3>";
echo strip_tags($usercomment, $allowedtags);
Установка заголовка X-XSS-Protection:
В PHP вы можете отправить заголовок X-XSS-Protection
Header, который будет указывать браузерам на проверку отраженной атаки Cross Site Scripting и блокировку загрузки страницы. Это не мешает всем атакам сценариев межсайтового взаимодействия только отражать их и их следует использовать в сочетании с другими методами.
<?php
header("X-XSS-Protection: 1; mode=block");
Написание собственной функции дезинфекции Другой вариант, если вы хотите получить больше контроля над тем, как работает санитария, заключается в том, чтобы написать собственную функцию санитаризации HTML, это не рекомендуется для начинающих PHP, поскольку ошибка сделает ваш сайт уязвимым.
Защита вашего сайта от атак с использованием межсайтовых скриптов с помощью политики безопасности контента
Эффективный подход к предотвращению атак на сценарии межсайтового сценария, который может потребовать больших корректировок в структуре и базе данных вашего веб-приложения, заключается в использовании политики безопасности контента.
Задайте политику безопасности содержимого как заголовок HTTP
Наиболее распространенным способом установки политики безопасности контента является установка его непосредственно в заголовке HTTP. Это можно сделать с помощью веб-сервера, отредактировав его конфигурацию или отправив его через PHP.
Пример политики безопасности контента, заданной в заголовке HTTP
<?php
header("content-security-policy: default-src 'self'; img-src https://*; child-src 'none';");
Установите политику безопасности контента как метатег
Вы можете включить свою политику безопасности контента в HTML-страницу страницы и установить ее на странице. Этот метод требует, чтобы вы установили на каждой странице или потеряли преимущество политики.
Пример политики безопасности контента, установленной в метатеге HTML
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">