1.什么是csrf攻击
csrf(cross-site request forgery)即跨站点请求伪造。攻击者盗用你的身份来做一些违法的事情,主要是利用cookie。
2.对csrf漏洞的检测
通过去掉htpp请求中的referer字段后重新提交,还能成功提交。因为referer指向的是http请求的来源地址。一般csrf都是陌生来源。
3.对csrf的防御
1) 验证referer字段,拦截到是其他网站则拦截。优点是只要加一个拦截器,不用改变现有的代码结构。缺点是黑客能够修改referer字段。
2) 在请求地址中添加token并验证。可以在请求中以参数的形式随机生成一个token,在服务器端来验证这个token是否有并且值是否正确。
当用户登录后,随机生成一个token,并把值存在session中,每次请求时把token从session中拿出,和请求地址中的token比较。对于get请求可以将token附在地址最后,而post方式则可以在提交的表单最后加上<input type="hiden" id="csrftoken" value="tokenvalue"/>。
3) 在http头部自定义属性并验证。通过XMLHttpRequest这个类可以一次性将该类请求加上csrftoken这个属性并把token放入其中。缺点是XMLHttpRequst主要用于Ajax中对页面的局部刷新,并不是所有请求都是通过Ajax.。要修改起来,对整体代码的结构改动也很大。
XSS攻击
xss攻击是指通过在网页中注入恶意代码,然后代码被浏览器成功执行。
防范方法:1.过滤用户输入如(<>,%,+,)2.在表单提交或者url参数传递前对参数进行过滤。