https://portswigger.net/web-security/csrf
CSRF存在的情况:
- 存在一个关键动作(转账、改密码、改邮箱等敏感的增删改查操作)
- 应用对用户鉴权身份认证是基于session cookie的(浏览器会自动将相应域的cookie带上去访问相关请求,如果是特定请求头比如HTTP basic认证或者特殊token请求头认证,则浏览器不会自动带上)
- 攻击者可以知道完成请求所需的所有参数
CSRF防御
CSRF token
在对应敏感操作的页面里生成CSRF token,这个token要跟session相关,而不是全局的那种(这种情况,攻击者可以先用自己的帐号登录获取这个token之后,再将这个token构造到特意表单里去,绕过防御)。
验证Referer
Referer请求头是一种HTTP请求头,用于表示在发起某个请求前所在的页面。当用户点击链接,或者提交表单时,由浏览器自动带上。