- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读过一篇使用 Cors-Anywhere 的文章提出一个示例 url 请求,这让我想到同源策略是多么容易被绕过。
虽然浏览器会阻止你直接访问error,在没有通过preflight请求时一并取消请求,但是一个简单的节点服务器不需要遵守这样的规则,可以作为代理使用。
所有需要做的就是将 'https://cors-anywhere.herokuapp.com/'
附加到恶意脚本中请求的 url 的开头,瞧,你没有不需要通过 CORS。
作为sideshowbarker pointed out ,部署您自己的 Cors-Anywhere 服务器需要几分钟时间。
这不会让 SOP 作为一种安全措施变得毫无意义吗?
最佳答案
SOP 的目的是按来源隔离浏览器中存储的数据。如果您从 domain1.tld 获得 cookie(或者它在浏览器存储中为您存储数据),domain2.tld 上的 Javascript 将无法获得访问权限。这不能被任何服务器端组件规避,因为该组件仍然无法以任何方式访问。如果没有 SOP,恶意网站就可以在您的浏览器中读取其他网站存储的任何数据。
正如您正确指出的那样,这也与 CORS 相关。通常,您的浏览器不会收到来自与它正在运行的页面来源不同的来源的 javascript 请求的响应。这样做的目的是,如果它有效,您可以从用户登录的站点获取信息。如果您通过 Cors-Anywhere 发送它,您将无法发送其他站点的用户 session cookie,因为你仍然没有访问权限,请求将作为代理发送到你自己的服务器。
Cors-Anywhere 重要的是未经身份验证的 API。某些 API 可能会检查原始 header 并仅响应其自己的客户端域。在这种情况下,当然,Cors-Anywhere 可以添加或更改 CORS header ,以便您可以从自己的托管客户端查询它。但 SOP 的目的并不是为了防止这种情况,即使在这种情况下,API 所有者也更容易将您的请求列入黑名单或限制您的请求,因为它们都由您的服务器代理。
简而言之,SOP 和 CORS 不是我认为您所指意义上的访问控制机制。它们的目的是防止和/或安全地允许对某些资源的跨源请求,但它们并不意味着例如阻止服务器端组件发出任何请求,或者例如尝试验证您的客户端 javascript 本身(这是技术上不可能)。
关于security - 同源策略容易规避?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63435310/
假设我有一个像这样的字符串:'1 + 2 + 3 * 4' 是否可以从左到右(顺序?线性?)计算它,使其等于 24 而不 15? 我事先不知道该字符串是什么,所以它可能是“1 + 2”,也可能是“1
我在脚本中得到了这一行,它检查项目类: $('#post').attr('class'); 有没有机会,读起来像: $('#post*').attr('class'); 所以如果 ID 是 fe。 p
将我的工具链安装在与其供应商要求的目录不同的目录中后,我一直在运行一些较小的问题,通过适本地设置 COMPILER_PATH、C_INCLUDE_PATH、CPLUS_INCLUDE_PATH 和 L
我正在使用 boost::program_options,它与许多其他 C++ 库一样受到同样的困扰,甚至是 std 本身:它仍然使用 C 风格的空终止字符串,因为没有人真正喜欢弱 std::字符串.
Peter Norvig 在 PAIP 中说道: in modern lisps...eval is used less often (in fact, in Scheme there isno ev
我有一个这样工作的程序: prog.py filename -r 使用我给定的默认默认值 prog.py filename -r 0 500 20 使用 0、500 和 20 我已经成功地使用了: c
我正在使用 Java 程序进行一些图像处理,目前我正在处理一些相当大的图像(大约十亿像素)。 毫不奇怪,由于以下异常,我无法做很多事情: Exception: java.lang.IllegalArg
所以我想用Scrapy做一个steam游戏的刷屏器。我不知道为什么有些游戏没有显示在结果 csv/json 中。我认为这是因为年龄验证表。 我真的很想看看问题出在哪里......但一切似乎都应该有效。
我正在尝试控制我的表单以及用户如何通过表单元素的 tabindex 属性与它们交互。我的所有元素都指定了 tabindex,我希望这个值得到尊重并得到正确使用。 我目前正在 Mac/Firefox 上
我将实现一个简单的链表。这是我到目前为止的(工作)代码: pub struct LinkedList { start: Option>>, } impl LinkedList { pu
我遇到了 IE8 的 31 个 CSS 文件限制。 我在想,除非我弄错了,否则 Assets 管道会结合我的 CSS 文件进行生产,因此这不会成为问题。 然而,当我为 IE 调试时,这是一个问题。有没
我正在尝试在 Yacc/Bison 中创建一个 LALR(1) 解析器,它可以接受具有灵活语法的命令。一个例子是通过调整室温( float )、 window 位置(整数)和吊扇(枚举)来控制房屋中的
为了调试,我想用 JSON.stringify(myobject) 序列化 javascript 对象。但这给出了: TypeError: Converting circular structure
我正在使用交叉 musl 编译器(相同版本)构建 native musl 编译器 (GCC 8.3.0),但出现此错误: In file included from /usr/local/x86_64
我是一名优秀的程序员,十分优秀!