什么是CORS?

CORS

什么是CORS?

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

学习资料

[跨域资源共享 CORS 详解] http://www.ruanyifeng.com/blog/2016/04/cors.html

CORS和CSRF区别

什么是CSRF

CSRF 主流防御方式是在后端生成表单的时候生成一串随机 token ,内置到表单里成为一个字段,同时,将此串 token 置入 session 中。每次表单提交到后端时都会检查这两个值是否一致,以此来判断此次表单提交是否是可信的。提交过一次之后,如果这个页面没有生成 CSRF token ,那么 token 将会被清空,如果有新的需求,那么 token 会被更新。

攻击者可以伪造 POST 表单提交,但是他没有后端生成的内置于表单的 token,session 中有没有 token 都无济于事。

既然已经有了同源策略,CSRF防护是否必要?

我之前错误的理解是「form 和 Ajax 发起的 POST 请求都受到 CORS 的限制,因此只要非幂等请求不是 GET, 就可以防范 CSRF」,而我今天才发现,原来 form 发起的 POST 请求并不受到 CORS 的限制,因此可以任意地使用其他域的 Cookie 向其他域发送 POST 请求,形成 CSRF 攻击。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文是 Django 官网文档的翻译。官网链接:https://docs.djangoproject.com/en...
    学以致用123阅读 5,802评论 0 5
  • 前端开发中,常常需要进行跨域请求。既然提到跨域,首先我们的知道什么是“同源策略”。 同源策略限制从一个源加载的文档...
    陈小俊先生阅读 2,461评论 0 4
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,824评论 1 45
  • CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 AJAX 跨域...
    柏龙阅读 6,645评论 0 2
  • 背景 跨域这个问题前端开发者都接触过,网上的文章也非常多,但是昨天的腾讯二面给我留了非常深刻的印象,原来跨域能问出...
    流动码文阅读 816评论 1 1