作者:cndz 围观群众:644 更新于 标签:xssxss攻击xss讲解
XSS跨脚本攻击语言 (Cross-Site Scripting)是一种常见的Web攻击方式,因首字母和层叠样式表(Cascading Style Sheets, CSS)的缩写相同 ,所以将跨脚本攻击语言缩写为XSS,攻击者通过注入恶意脚本来攻击用户,从而获取用户的信息或控制用户的浏览器。本文将介绍XSS攻击的原理、常用绕过姿势以及避免XSS攻击的方法。
XSS攻击的原理是攻击者通过在Web应用程序中注入恶意代码,使得用户在浏览器上执行这些代码,从而达到攻击目的。攻击者通常通过以下两种方式进行注入:
反射型XSS攻击是指攻击者将恶意脚本注入到Web应用程序URL中,然后将URL发送给用户。一旦用户点击这个URL,恶意脚本就会被执行,从而达到攻击目的。
存储型XSS攻击是指攻击者将恶意脚本注入到Web应用程序的数据库中,然后用户在访问被注入的页面时就会执行这些恶意脚本。
说白了,XSS攻击就是通过某种方式向网页中恶意注入脚本。让浏览器去执行一些网页中原本不存在的前端代码。攻击者通常通过XSS攻击来达到自己的目的。
1.流量劫持恶意跳转连接。
<script>window.location.href="http://www.baidu.com";</script>
其实上面这段代码很好理解。当打开当前页面的时候,浏览器会自动调转到百度。
2.窃取网页浏览中的cookie值
<script>alert(document.cookie)</script>
在浏览网页时,要登录账户是一个很普遍的操作。一旦登录成功,服务器会返回一个cookie值。这个cookie值就像是一个通行证,如果你有这个通行证,就能证明你是某个用户。
虽然cookie值很方便,但是如果cookie值被别人偷走了,别人就可以用这个通行证登录你的账户,而不需要知道你的密码。为了保护你的账户安全,需要小心处理cookie值。
如果想要通过script脚本获取当前网页的cookie值,通常会使用document.cookie。所以,在建立网页时,一定要特别小心防止xss攻击。一些cookie值有其他的验证措施,例如HttpOnly,如果在Cookie中设置了”HttpOnly”属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。\
1.过滤绕过
某些网站过滤了一些特殊字符。用户可以输入但是网站会将这种特殊字符过滤掉。比如<script>alert("demo")</script>
如果将<script>
标签定义为特殊字符。那么上面的脚本最终存到数据库中的样子为alert(demo)
因为缺少<script>标签而不能被执行。
攻击者可以这样组装攻击脚本,
<scrip<script>t>alert(document.cookie)</scrip<script>t>
在经过一层过滤后,上面的脚本变为下面这样。攻击者完成绕过。
<script>alert(document.cookie)</script>
2.大小写绕过
某些网站为了防止XSS攻击,会禁用默写特殊值。例如script
但是网站设计者忽略了标签大小写不敏感。从而让攻击这钻了空子。比如上边中的获取网站cookie的脚本可以写成。
<Script>alert(document.cookie)</sCript>
或者
<sCript>alert(document.cookie)</scriPt>
3.对脚本进行编码绕过。
如果网站将alert
定义为非法字符。那么攻击者可以对其进行unicode转码。
<script>eval(\u0061\u006c\u0065\u0072\u0074(document.cookie))</script>
4.除了利用<script>
脚本进行攻击,还可以通过其他标签进行攻击。
常见的有a标签
<a onmouseover=javascript:alert(document.cookie);>xssdemo</a>
button标签
<button onclick=javascript:alert(document.cookie);>xssdemo</button>
甚至img标签
<img src="ddd" onerror='javascript:alert(document.cookie)'>
上面的攻击方式都是单一的。在实际应用中攻击者往往通过将上述攻击方式想组合,来达到绕过防御的目的。
为了防止XSS攻击,我们可以采取以下措施:
对用户输入的数据进行过滤,过滤掉特殊字符和HTML标签等。可以使用一些开源的输入过滤库,如HTML Purifier。
对Web应用程序的输出进行转义,将一些特殊字符转换为HTML实体,如将<转换为<
,将>转换为>
。
CSP是一种Web安全政策,可以帮助防止XSS攻击。CSP可以限制Web应用程序中可以执行的脚本,从而防止恶意脚本的注入。可以使用一些开源的CSP实现,如Helmet。
XSS攻击是一种常见的Web攻击方式,攻击者通过注入恶意脚本来攻击用户。为了防止XSS攻击,我们可以采取一些输入过滤、输出转义以及CSP等措施。