安全问题(XSS与CSRF)

一.XSS
1.XSS的定义

跨站脚本攻击(Cross Site Scripting),缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
2. XSS的攻击方式

(1)反射型: 发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS随响应内容一起返回给浏览器,最后浏览器解析执行XSS代码,这个过程就像一次发射,所以叫反射型XSS。
(2)存储型: 存储型XSS和反射型的XSS差别就在于,存储型的XSS提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。
( 3 )DOM XSS攻击不同于反射型XSS和存储型XSS,DOM XSS代码不需要服务器端的解析响应的直接参与,而是通过浏览器端的DOM解析。这完全是客户端的事情。
DOM XSS代码的攻击发生的可能在于我们编写JS代码造成的。我们知道eval语句有一个作用是将一段字符串转换为真正的JS语句,因此在JS中使用eval是很危险的事情,容易造成XSS攻击。避免使用eval语句。
3.XSS危害

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

4.XSS防御

从以上的反射型和DOM XSS攻击可以看出,我们不能原样的将用户输入的数据直接存到服务器,需要对数据进行一些处理。以上的代码出现的一些问题如下

没有过滤危险的DOM节点。如具有执行脚本能力的script, 具有显示广告和色情图片的img, 具有改变样式的link, style, 具有内嵌页面的iframe, frame等元素节点。
没有过滤危险的属性节点。如事件, style, src, href等
没有对cookie设置httpOnly。

如果将以上三点都在渲染过程中过滤,那么出现的XSS攻击的概率也就小很多。

解决方法如下

对cookie的保护

对重要的cookie设置httpOnly, 防止客户端通过document.cookie读取cookie。服务端可以设置此字段。

用户输入数据的处理
编码:不能对用户输入的内容都保持原样,对用户输入的数据进行字符实体编码。
解码:原样显示内容的时候必须解码,不然显示不到内容了。
过滤:把输入的一些不合法的东西都过滤掉,从而保证安全性。如移除用户上传的DOM属性,如onerror,移除用户上传的Style节点,iframe, script节点等。

二.CSRF
CSRF 就是利用用户的登录态发起恶意请求
在这里插入图片描述
如何防御

通过 referer、token 或者 验证码 来检测用户提交。
避免全站通用的cookie,严格设置cookie的域.
阻止第三方网站请求接口
对于用户修改删除等操作最好都使用post 操作 。
尽量不要在页面的链接中暴露用户隐私信息。
原文地址:https://www.cnblogs.com/princeness/p/11664921.html