Что делает вход уязвимым для XSS?

Я читал о XSS, и я сделал простую форму с текстом, и отправьте вход, но когда я выполняюсь <script>alert();</script> на нем ничего не происходит, сервер получает ту строку, и это - все.

Для чего я должен сделать, делают это уязвимым?? (затем я изучу то, что я не должен делать hehe),

Удачи.

7
задан Dolph 25 May 2010 в 18:54
поделиться

5 ответов

В самом деле, просто позвольте серверу выводить его так, чтобы входная строка эффективно встраивалась в исходный HTML-код, который возвращался клиенту.

Пример PHP:

<!doctype html>
<html lang="en">
    <head><title>XSS test</title></head>
    <body>
        <form><input type="text" name="xss"><input type="submit"></form>
        <p>Result: <?= $_GET['xss'] ?></p>
    </body>
</html>

Пример JSP:

<!doctype html>
<html lang="en">
    <head><title>XSS test</title></head>
    <body>
        <form><input type="text" name="xss"><input type="submit"></form>
        <p>Result: ${param.xss}</p>
    </body>
</html>

В качестве альтернативы вы можете повторно отобразить значение во входных элементах, что также часто встречается:

<input type="text" name="xss" value="<?= $_GET['xss'] ?>">

соотв.

<input type="text" name="xss" value="${param.xss}">

Таким образом, "странные" строки атаки, такие как "/>

К решениям по предотвращению XSS относятся, среди прочего, htmlspecialchars () и fn: escapeXml () для PHP и JSP соответственно. Они заменят среди прочих <, > и " на <, > и " , так что ввод конечного пользователя не оказывается буквально встроенным в исходный код HTML, а вместо этого просто отображается в том виде, в котором он был введен.

21
ответ дан 6 December 2019 в 04:51
поделиться

Вы должны «внедрить» скрипт. Итак, если у вас есть текстовый ввод, вы должны ввести форму:

" /> <script>alert();</script>

Таким образом вы сначала закрываете атрибут существующего HTML, а затем вводите свой собственный код. Идея состоит в том, чтобы избежать кавычек.

4
ответ дан 6 December 2019 в 04:51
поделиться

Три простые вещи:

  1. Если в какой-то момент вы не выводите ненадежные данные на страницу, XSS не сможет использовать
  2. Все ваши ненадежные данные (формы, строки запросов, заголовки и т. д.) должны быть проверены по белому списку, чтобы убедиться, что он находится в допустимом диапазоне
  3. Весь ваш вывод на экран должен быть закодирован с помощью соответствующей библиотеки (например, Anti-XSS для .NET) на соответствующем языке (HTML, CSS, JS и т. Д.).

Дополнительная информация с примерами в OWASP Top 10 для разработчиков .NET, часть 2: Межсайтовый скриптинг (XSS) .

1
ответ дан 6 December 2019 в 04:51
поделиться

Google сделал действительно потрясающее руководство, которое охватывает XSS и другие уязвимости безопасности здесь . Это может помочь вам понять, как эти проблемы используются в реальных приложениях.

1
ответ дан 6 December 2019 в 04:51
поделиться

Заставить сервер вывести ввод обратно клиенту.

21
ответ дан 6 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: