前端安全之XSS

2020年05月04日 · Linux · 技术帮助分享 · 673次阅读

------正---文------

XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。
跨站脚本的重点不在‘跨站’上,而在于‘脚本’上。大多数xss攻击的主要方式是嵌入一段远程或第三方域上的js代码,实际上是在目标网站的作用域下执行了这段js代码。

XSS攻击方式

反射型xss:也叫非持久型xss,是指发生请求时,xss代码出现在请求url中,作为参数提交到服务器,服务器解析并响应,响应结果中包括了xss代码,非常后浏览器解析并实行。

存储型xss:也叫持久型xss, 主要是将xss代码发送到服务器(不管是数据,内存或是文件体系等),然后在下次请求页面的时候就不用带上xss代码了。
非常典型的就是留言板xss , 用户提交了一条包括xss代码的留言到数据库。当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。浏览器发现有xss代码,就当做正常的html和js解析实行。xss攻击就发生了。

DOM XSS:Dom xss攻击不同于反射型xss和存储型xss, Dom xss代码不需要服务器端的解析响应的直接介入,而是通过浏览器端的dom解析,这完全是客户端的事情。

XSS危害

通过document.cookie盗取cookie
应用js或css毁坏页面正常的结构与样式
流量劫持(通过访问某段具有window.location.href定位到其他页面)
Dos攻击:行使合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器响应。
行使iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行少许经管动作,或执行少许一般的
如发微博、加好友、发私信等操作。
行使可被攻击的域受到其他域信任的特点,以受信任来源的身份请求少许平时不容许的操作,如进行不当的投票活动。

XSS防御

对Cookie的保护
对重要的cookie设置httpOnly,防止客户端通过document.cookie读取cookie。服务端可以设置此字段。
对用户输入数据的处分
编码:不可以对用户输入的内容都保持原样,对用户输入的数据进行字符实体编码。对于字符实体的概念可以参考文章底部给出的参考链接。
解码:原样显示内容的时候必须解码,不然显示不到内容了。
过滤:把输入的少许分歧法的东西都过滤掉,从而包管安全性。如移除用户上传的DOM属性,如onerror,移除用户上传的Style节点,iframe, script节点等。
存在一个parse函数,对输入的数据进行处分,回笼处分之后的数据对输入的数据(如DOM节点)进行解码(应用第三方库 he.js)过滤掉少许元素有危害的元素节点与属性节点。如script标签,onerror事件等。(应用第三方库HTMLParser.js)



一旦在DOM解析过程成出现不在预期内的改变(JS代码实行或样式大批变化时),就可能发生XSS攻击
XSS分为反射型XSS,存储型XSS和DOM XSS
1.反射型XSS是在将XSS代码放在URL中,将参数提交到服务器。服务器解析后响应,在响应结果中存在XSS代码,终极通过浏览器解析实行。
2.存储型XSS是将XSS代码存储到服务端(数据库、内存、文件体系等),在下次请求同一个页面时就不需要带上XSS代码了,而是从服务器读取。
3.DOM XSS的发生主要是在JS中应用eval造成的,所以应当避免应用eval语句。
4.XSS危害有窃取用户cookie,通过JS或CSS改变样式,DDos造成正常用户无法得到服务器响应。
5.XSS代码的预防主要通过对数据解码,再过滤掉危险标签、属性和事务等。



原文地址:https://www.clarkhu.net/?p=22



------结---束------

推广:AI工具网 | 专注人工智能工具推荐!
『静谧星河』采用《署名-相同方式共享 4.0 国际》进行许可。如需转载请保留本文地址。
本文地址:
https://www.yuvin.cn/Linux/367.html
AD

支持我

教程帮助LinuxjsPHP

静谧星河最后编辑于4年前


因本站不提供交互式服务,评论均需审核后显示,敬请谅解。

添加新评论

captcha

请输入验证码