CSRF攻击是什么?如何防范?
概念
CSRF(Cross-site request forgery),中文名称:跨域请求伪造。攻击者盗用了你的身份,以你的名义发送恶意请求。 CSRF主要能做的事情:以你的名义发送邮件,发消息,盗取你的账号,在受害者不知情的情况下,以受害者的名义伪造请求发送给受攻击站点,从而在受害者并未授权的情况下执行受害者权限下的各种操作。
CSRF攻击原理
CSRF攻击原理就是,一个正常的网站存在着CSRF漏洞,然后攻击者(攻击者很深入的了解正常网站)创建了恶意网站来对正常网站进行攻击。当用户访问正常网站的时候,在自身的session未失效的情况下,访问了恶意网站。
CSRF攻击的过程
首先就是用户在通过正常浏览器的访问正常网站,这个时候访问的正常网站会请求用户输入用户名和密码请求登录验证,验证通过后,返回对应的cookie给正常网站,这样正常网站就可以在用户自身授权的情况下,执行各种请求权限下的操作。 然后用户在没有退出正常网站的时候,在同一浏览器,访问了恶意网站,这个时候攻击者就拿到了用户的认证登录信息和登录状态。 接着,恶意网站通过攻击性代码访问正常网站,并执行非用户授权的操作,就这样,攻击者就在用户毫不知情的情况下,执行了用户自身才可以执行的操作。
CSRF攻击对象
CSRF攻击是黑客借助受害者的cookie伪造请求,骗取服务器的信任。黑客所能做的就是服务器发送伪造请求。所以我们要保护的对象就是那些可以直接产生数据改变的服务,而对于读取数据的服务,则不需要进行CSRF保护,比如银行系统中转账的请求会直接改变账户的金额,会遭到CSRF攻击,需要保护,而查询余额是对金额的读取操作,不会改变数据,无需保护。
防范CSRF攻击
防范原理:防范CSRF攻击,其实只要能识别出哪些是正常用户主动发起的,哪些不是,这个时候就是在请求中嵌入一些额外的数据,让网站服务器能够区分出未授权的请求。
- 验证HTTP Referer字段
- 使用验证码
- 在请求地址中加入token并验证
- 在HTTP头中自定义属性并验证