zoukankan      html  css  js  c++  java
  • 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. 如果比对之后这连个值一样, 则表示这个是正常的请求, 如果对比之后发现这两个值不一样, 则说明这个是不正常的请求, 服务器端不需要做处理

       

  • 相关阅读:
    php yield
    原来 php 中的 json_encode() 只支持utf-8.不支持gbk啊
    mongodb 二进制安装
    Centos 6.3 安装教程
    php 测试 程序执行时间,内存使用情况
    workerman vmstat服务器状态监控服务
    php大量数据 10M数据从查询到下载 【内存溢出,查询过慢】解决方案
    PHP_EOL DIRECTORY_SEPARATOR
    利用curl 模拟多线程
    Laravel 输出最后一条sql
  • 原文地址:https://www.cnblogs.com/Infernal/p/11282443.html
Copyright © 2011-2022 走看看