攻击名称:
CSRF(cross-site request forgery,跨站域请求伪造),也被称为 one link attack/session riding,缩写(XSRF/CSRF)
同源策略:
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响,可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现
同源是指:协议、域名、端口 同时相同才认为是同源。在同源检测时,将使用document.domain作为检测的依据
攻击原理:
攻击者(attacker)利用存储在本地的有效cookie及cookie的作用域来伪造用户的某种行为(只是利用cookie骗取服务器信任,并不能拿到cookie,也看不到cookie内容)
- 用户(victim)访问信任网站A,输入用户名和密码并登录成功,产生网站A的生成的cookie
- 在此cookie的有效期内,用户恰好访问恶意网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数,此时浏览器会自动携带网站A的cookie
- 网站A收到这个请求后,误认为是用户(victim)的正常操作,伪造成功
防御手段:
大多数防御方法是在请求中嵌入额外的验证数据来检测是否是真实用户的操作
操作步骤(前情提要,本次实验需要有拥有两个不同域名的条件,本人没有,所以就演示一下具体配置):
标准配置语言如下:
配置语法:add_header name value [always];
默认状态:-
配置方法:http、server、location、if in location
修改默认站点配置语句,添加指定的语句“add_header Access-Control-Allow-Origin http://localhost/index.html;”“add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;”
add_header Access-Control-Allow-Origin:添加指定能够进行跨域访问的地址,添加之后,添加的地址就会允许进行跨域访问
Access-Control-Allow-Methods:添加允许的请求方式
检查语法并重启服务即可