0%

XSS攻击与防御

XSS攻击与防御

什么是XSS攻击

XSS攻击的全称是跨站脚本攻击(Cross Site Scripting),为了不与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,是WEB应用程序中最常见到的攻击手段之一。跨站脚本攻击指的是攻击者在网页中嵌入恶意脚本程序,当用户打开该网页时,脚本程序便开始在客户端的浏览器上执行,以盗取客户端cookie、盗取用户名密码、下载执行病毒木马程序甚至是获取客户端admin权限等。

常见的XSS攻击类型有两种,一种是反射型,攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的;另一种是持久型XSS攻击,黑客提交含有恶意脚本的请求,保存在被攻击的Web站点的数据库中,用户浏览网页时,恶意脚本被包含在正常页面中,达到攻击的目的

value为输入框输入的值,本来输入张三,应该显示为

1
<input type="text" name="nick" value="张三"/>

然而恶意输入"/><script>alert("haha")</script><!-,就显示为了

1
<input type="text" name="nick" value=""/><script>alert("haha")</script><!-" />

分为三类

第一类为:反射型XSS

反射型XSS只是简单的把用户输入的数据反射给浏览器,攻击者需要诱导用户点击一个恶意链接才能攻击成功

第二类为:存储型XSS

存储型XSS会把用户输入的数据存储在服务器端,如黑客写下一篇含有恶意js的博客,发表之后所有访问该博客的用户都会在浏览器上执行该恶意js代码。攻击者将恶意脚本存储在服务器端,所以叫存储型XSS

第三类为:DOM BASE XSS

DOM BASE XSS是一种特殊的反射型XSS,通过修改页面的DOM节点形成的XSS

如何进行防御

XSS之所以会发生,是因为用户输入的数据变成了代码。一般是用户输入中不是用的,因此,我们需要对用户输入的数据进行HTML转义处理,将其中的“尖括号”、“单引号”、“引号” 之类的特殊字符进行转义编码

还可以设置cookie的HttpOnly属性,浏览器禁止页面JavaScript访问带有HttpOnly属性的cookie,可以防止XSS攻击者获取Cookie

欢迎关注我的其它发布渠道