网络安全之 XSS 攻击

概念

XSS,全称是 跨站脚本攻击(Cross-site scripting),为了不和层叠样式表(CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意的 script 代码,当用户浏览该页之时,嵌入其中的 script 代码会被执行,从而达到恶意攻击用户的目的,如盗取用户的 cookie 等敏感信息。

类型

存储型 XSS

数据库中存有的存在XSS攻击的数据,返回给客户端。若数据未经过任何转义。被浏览器渲染。就可能导致XSS攻击。

反射型 XSS

将用户输入的存在XSS攻击的数据,发送给后台,后台并未对数据进行存储,也未经过任何过滤,直接返回给客户端。被浏览器渲染。就可能导致XSS攻击。

DOM XSS

纯粹发生在客户端的XSS攻击,比如:

1
http://www.some.site/page.html?default=French

页面代码:

1
2
3
4
<script>
document.write("<OPTION value=1>"+document.location.href.substring(document.location.href.indexOf("default=")+8)+"</OPTION>");
document.write("<OPTION value=2>English</OPTION>");
</script>

该XSS攻击实现条件:

(1)用户点击了如下连接:

1
http://www.some.site/page.html?default=<script>alert(document.cookie)</script>

(2)后台对URL参数未做任何过滤处理,返回给客户端,前端直接从url上获取参数。

(3)打开网址的浏览器是低版本浏览器,常见ie8以下。

满足以上三者,就会导致URL上的js代码执行:alert(document.cookie),但是攻击者可以利用这个,做你无法想象的事情。在现代浏览器中,已经做了xss过滤,一旦检测到xss,会提示报错如下:

1
2
The XSS Auditor refused to execute a script in 'file:///C:/Users/summerhxji/Desktop/taobao/xss.html?default=%3Cscript%3Ealert(document.cookie)%3C/script%3E' because its source code was found within the request. The auditor was enabled as the server did not send an 'X-XSS-Protection' header.
(anonymous) @ xss.html?default=<script>alert(document.cookie)</script>

以上便是学术上的划分的XSS攻击类型,2、3类型其实都是反射型的攻击。了解了这些,意识到XSS攻击无处不在啊。

防御方法

(1)从输入和输出进行过滤和转义。可以使用 htmlspecialchars() 等函数进行过滤转义,当然,一些文件上传等,也可能会造成此攻击,要限制上传文件的类型,比如只能传图片等。

参考文章:

XSS漏洞的原理

XSS攻击和防御详解

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章