跳到主要内容

十四、Web站点如何防范XSS、CSRF、SQL注入攻击?

一、XSS跨站脚本攻击

> XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie,导航到恶意网站,携带木马等。

如何防止XSS跨站脚本攻击:

原则:不相信用户输入的数据

1、 将重要的cookie标记为httponly,这样的话Javascript中的document.cookie语句就不能获取到cookie了;
2、 只允许用户输入我们期望的数据例如:年龄的textbox中,只允许用户输入数字,而数字之外的字符都过滤掉;
3. 对数据进行Html Encode 处理。&lt; 转化为<、>转化为 &gt;、& 转化为 &、' 转化为 '、" 转化为 "、空格 转化为   4、 过滤或移除特殊的Html标签例如:、<iframe>、<for<、>for>、&quotfor;<br /> <strong>5、</strong> 过滤JavaScript事件的标签例如“οnclick=”、”onfocus”等等;<br /> <strong>6、</strong> 很多浏览器都加入了安全机制来过滤XSS;</p> <p><strong>注意:攻击代码不一定在<script>中

二、CSRF跨站请求伪造

> CSRF(XSRF)尽管听起来很想XSS跨站脚本攻击,但是它于XSS完全不同。XSS是利用站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的站点。与XSS相比,CSRF攻击不大流行和难以防范,所以比XSS更具危险性。

如何防止CSRF跨站请求伪造:

1、 对于web站点,将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field);
2、 “双提交”cookie此方法只工作于Ajax请求,但它能够作为无需改变大量form的全局修正方法如果某个授权的cookie在formpost之前正被JavaScript代码读取,那么限制跨域规则将被应用什么叫限制跨域规则呢?限制跨域规则就是:如果服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域,因为其它域是不能从信任域读取cookie的上面那个例子的受信任域就是银行网站的某个域,而Mallory发给Bob的链接不是受信任的域;