一、CSRF简介
CSRF,英文全称Cross-Site Request Forgery,跨站请求伪造,坏家伙冒充用户身份执行用户操作。百度上是这么说的:是一种挟制用户在当前已登录的Web应用程序上执行非本意操作的方法。
简而言之就是,坏家伙盗用你的身份,用你的名义发送恶意的请求。突然想到几个成语,CSRF似乎都有点狐假虎威、借刀杀人的味道。
二、CSRF的危害
坏家伙可以用你的名义发邮件、发消息、买东西、转账......甚至,能假借你的名义进行一系列的诈骗操作(赶紧下载《国家反诈中心》app),操作空间可谓是只有想不到,没有做不到。
三、CSRF基本原理
个人理解是,受害者的浏览器已经在某些网站(后文称网站A)认证过,然后hacker通过某些方法(让受害者访问精心制造的网站B),盗取受害者的cookie(站点的认证凭证),在受害者不知情的情况下,冒用受害者的认证凭证,以受害者的名义发送恶意请求。那些QQ空间莫名奇妙发送赌博等等说说,就是最经典的CSRF。
四、如何防范CSRF
要完成一个CSRF操作,至少需要有以下两个条件:
1、登录正常网站A,完成认证,并在本地生成cookie(即认证);
2、在不退出网站A登录状态下,访问坏家伙的网站B;
知道坏家伙使坏的必要条件,那么如何防范就好办了,打破使坏的必要条件,自然就解决问题咯。
写给网站开发者
(一)阻止不明外域访问
(1)同源检测
(2)Samesite Cookie
(二)提交时要求附加本域才能获取的信息
(1)CSRF Token
(2)双重Cookie验证
写给个人用户
(一)邮件首发尽可能使用客户端;
(二)尽可能不打开可疑链接,如果要打开这类链接,使用几乎没有记录的浏览器打开。
五、写在最后
热爱生命,是活着的底线,也是活着的最高境界,愿,此刻正在看这篇文章的你,越来越好~
下期预告:浅谈系列之服务端请求为伪造(SSRF),敬请期待~