CORS和CSRF

CORS和CSRF

什么是CORS?
CORS是一个W3C标准,全称是"跨域资源共享",他允许浏览器向夸源服务器,发出XMLHTTPRequest请求,从而克服了AJAX只能同源使用的限制.

什么是CSRF?
名为跨站请求伪造,指攻击者盗用了你的身份,以你的名义发送恶意请求,CSRF主流防御方式是在后端生成表单的时候生成遗传随机token,内置到表单里成为一个字段,同时,将此串token置入session中.每次表单提交到后端时都会检查这两个值是否一致,以此来判断此次表单提交是否是可信的.提交过一次之后,如果这个页面没有生成CSRF token,那么token将会被清空,如果有新的需求,那么token会被更新.
攻击者可以伪造POST表单提交,但是他没有后端生成的内置于表单的token,session中没有token都无济于事.

如何去解决CSRF跨域请求伪造问题?

防止CSRF攻击的步骤

  1. 在客户端向后端服务器请求页面数据时, 后端会在响应的token中设置csrf_token的值
  2. 在前端的From表单中也添加了一个隐藏的字段, 这个字段的值也是csrf_token
  3. 在用户点击提交的时候, 会带上表单中的csrf_token和cookie中的csrf_token一起发送到后端服务器
  4. 后端服务器接收前端发送过来的请求
    1. 从cookie中取出csrf_token
    2. 从From表单中取出隐藏的csrf_token值
    3. 对这两个token值进行对比
  5. 如果比对之后这连个值一样, 则表示这个是正常的请求, 如果对比之后发现这两个值不一样, 则说明这个是不正常的请求, 服务器端不需要做处理

   

原文地址:https://www.cnblogs.com/Infernal/p/11282443.html