110
Одна из распространенных уязвимостей веб-приложений — это Cross-Site Scripting (XSS). XSS позволяет злоумышленнику внедрить вредоносный JavaScript-код в веб-страницу, которая затем выполняется в браузере пользователя.
Вот пример простого XSS-эксплойта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>XSS Example</title> </head> <body> <form action="submit.php" method="GET"> <input type="text" name="comment" placeholder="Enter your comment"> <input type="submit" value="Submit"> </form> <div id="comments"></div> <script> // Пример уязвимого кода, который не экранирует ввод пользователя const urlParams = new URLSearchParams(window.location.search); const comment = urlParams.get('comment'); if (comment) { document.getElementById('comments').innerHTML = comment; } </script> </body> </html> |
В этом примере, если пользователь введет что-то вроде <script>alert('XSS')</script>
в поле ввода и отправит форму, этот код будет выполнен в браузере.
Пример использования CSP:
1 |
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline';"> |
Этот заголовок разрешает загрузку скриптов только с текущего домена и блокирует выполнение внешних скриптов.