剑指offer-网络安全(一)

1、什么是XSS攻击,如何避免?

XSS攻击又称CSS,全称Cross Site Script(跨站脚本攻击),其原理是攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。XSS攻击类似于 SQL注入攻击,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制,获取用户的一些信息。XSS是Web 程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式。XSS防范的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码。

2、 什么是 CSRF攻击,如何避免?

如何避免: 1.验证 HTTP Referer 字段: 2. 使用验证码 关键操作页面加上验证码,后台收到请求后通过判断验证码可以防御CSRF。但这种方法对用户不太友好。 3. 在请求地址中添加token并验证 CSRF攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于cookie中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的cookie 来通过安全验证。要抵御CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie之中。可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有token或者 token 内容不正确,则认为可能是 CSRF攻击而拒绝该请求。这种方法要比检查Referer 要安全一些,token 可以在用户登陆后产生并放于session之中,然后在每次请求时把token从session 中拿出,与请求中的 token 进行比对,但这种方法的难点在于如何把 token 以参数的形式加入请求。对于GET请求,token将附在请求地址之后,这样URL就变成http://url?csrftoken=tokenvalue。而对于POST请求来说,要在 form 的最后加上<input type="hidden"name="csrftoken"value="tokenvalue"/>,这样就把token以参数的形式加入请求了。 4. 在HTTP头中自定义属性并验证 这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于HTTP请求之中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个HTTP头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过XMLHttpRequest请求的地址不会被记录到浏览器的地址栏,也不用担心token会透过 Referer泄露到其他网站中去。
经验分享 程序员 微信小程序 职场和发展