We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CSRF跨站请求伪造,获取已认证登陆的网站cookie,冒充用于发起请求,完成一些违背用户意愿的操作。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
1、用户已经登录了站点 A,并在本地记录了 cookie 2、在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下),访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。 3、站点 A 没有做任何 CSRF 防御
1、Token验证 第一步:后端随机生成一个token值,把这个token保存到session状态中;同时后端吧这个token传给前端页面; 第二步:前端页面提交请求时,把token加到请求入参或是头信息中,一起传给后端; 最后一步:后端验证前端传来的token与session中的是否一致,一致则合法,否则是非法请求。 2、Referer验证 验证referer请求来源,这种方法成本最低,但是并不能保证100%有效,因为服务器并不是什么时候都能取到referer,而且低版本的浏览器存在伪造referer的风险。 3、验证码 强制用户必须与页面应用交互,成功验证验证码才能完成最终的请求。这种方式很好的遏制csrf,但用户体验比较差。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
CSRF攻击
CSRF跨站请求伪造,获取已认证登陆的网站cookie,冒充用于发起请求,完成一些违背用户意愿的操作。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
完成CSRF攻击必须的三个条件:
1、用户已经登录了站点 A,并在本地记录了 cookie
2、在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下),访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。
3、站点 A 没有做任何 CSRF 防御
如何防御CSRF?
1、Token验证
第一步:后端随机生成一个token值,把这个token保存到session状态中;同时后端吧这个token传给前端页面;
第二步:前端页面提交请求时,把token加到请求入参或是头信息中,一起传给后端;
最后一步:后端验证前端传来的token与session中的是否一致,一致则合法,否则是非法请求。
2、Referer验证
验证referer请求来源,这种方法成本最低,但是并不能保证100%有效,因为服务器并不是什么时候都能取到referer,而且低版本的浏览器存在伪造referer的风险。
3、验证码
强制用户必须与页面应用交互,成功验证验证码才能完成最终的请求。这种方式很好的遏制csrf,但用户体验比较差。
The text was updated successfully, but these errors were encountered: