什么是跨站脚本

Vic*_*tor 22 security xss

在这个链接:http://www.acunetix.com/websitesecurity/cross-site-scripting/__CODE__,它说:__CODE__.我在阅读本文时的第一个问题是:如果应用程序部署在安全的服务器上(例如银行的情况),黑客如何才能访问网页的源代码?或者他可以在不访问源jsp的情况下注入恶意脚本吗?

pha*_*ers 52

使用跨站点脚本,可以感染生成的HTML 文档,而不会导致Web服务器本身被感染.XSS攻击使用服务器作为向量,将恶意内容立即从请求(反射的攻击)发送回客户端,或者通过存储和检索(存储的攻击)延迟.

XSS攻击利用服务器生成页面的弱点,该页面允许请求数据以原始形式显示在响应中.该页面仅反映请求中提交的内容...但该请求的内容可能包含突破普通文本内容的字符,并引入开发人员不想要的HTML或javascript内容.

这是一个简单的例子.假设你有一些模板语言来制作HTML页面(如PHP,ASP,CGI或Velocity或Freemarker脚本).它采用以下页面并用"name"查询参数的未转义值替换"<?= $ name?>".

<html>
<head><title>Example</title></head>
<body>Hi, <?=$name?></body>
</html>
Run Code Online (Sandbox Code Playgroud)

有人使用以下网址调用该页面:

http://example.com/unsafepage?name=Rumplestiltskin
Run Code Online (Sandbox Code Playgroud)

应该期待看到这样的消息:

Hi, Rumplestiltskin
Run Code Online (Sandbox Code Playgroud)

使用更恶意的内容调用同一页面可用于大幅改变页面或用户体验.

http://example.com/unsafepage?name=Rumplestiltskin<script>alert('Boo!')</script>
Run Code Online (Sandbox Code Playgroud)

这个URL不仅仅是说"嗨,Rumplestiltskin",还会使页面弹出一条警告信息,上面写着"嘘!".当然,这是一个简单的例子.可以提供复杂的脚本来捕获击键或要求验证名称和密码,或者清除屏幕并完全重写具有震动内容的页面.它仍然看起来像是来自example.com,因为页面本身确实如此,但是CONTENT正在请求中的某个地方提供,并且只是作为页面的一部分反映出来.

因此,如果页面只是吐出请求它的人提供的内容,并且您正在请求该页面,那么黑客如何感染您的请求?通常,这是通过在网页上提供链接或通过电子邮件发送给您,或者在URL缩短的请求中实现的,这样就很难看到URL中的混乱.

<a href="http://example.com?name=<script>alert('Malicious content')</script>">
Click Me!
</a>
Run Code Online (Sandbox Code Playgroud)

具有可利用的XSS漏洞的服务器本身不运行任何恶意代码 - 它的编程保持不变 - 但可以使其向客户端提供恶意内容.


Jas*_*n P 5

该攻击者不需要访问源代码。

一个简单的示例是写入页面的 URL 参数。您可以更改 URL 参数以包含脚本标记。

另一个例子是评论系统。如果网站没有正确清理输入/输出,攻击者可以将脚本添加到评论中,然后在查看评论的任何人的计算机上显示和执行该脚本。

这些是简单的例子。它还有很多,还有很多不同类型的 XSS 攻击。