首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Layman术语中的同源策略

Layman术语中的同源策略
EN

Stack Overflow用户
提问于 2012-07-14 00:15:55
回答 2查看 4K关注 0票数 8

有没有人可以帮我更好的理解同源策略。我已经看过几个描述它的网站,但我正在寻找一个更简单的解释,你会如何向一个孩子描述它?

这个link似乎是我发现的最好的。任何人都可以扩展吗?有没有人能解释一下为什么会有这个政策?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-14 00:58:32

需要使用同源策略来防止CSRF。想象一下这样的场景:

  1. 银行经理Joe Fatcat在他的银行管理后端有一个帐户。此帐户允许他访问任何在TBtF银行开户的人的机密帐户信息。他甚至可以重置某人的密码、转账、更改帐户所有权等。现在,TBtF银行解雇了IT人员
  2. 。现在他是心怀不满的“前IT人杰克”,他想要向他的前雇主报仇。杰克没有访问银行管理后台的权限,但他知道乔有。
  3. ,所以杰克给他的老板发了一封电子邮件,里面有一个指向杰克创建的页面的链接。在页面上,有一些JavaScript,比如:

代码语言:javascript
复制
var xhr = new XMLHttpRequest(),
    data = "from="+victimAccount
           + "&to="+jacksAccount
           + "&amt=a+gazillion+dollars";
xhr.open("POST", "http://tbtfbank.tld/accounts/wiretransfer.aspx", true);
xhr.send(data);

  1. 第二天,乔到达他的办公室,像往常一样登录到他的管理帐户,并在background.
  2. Joe中打开了选项卡,看到了一封电子邮件,其中包含到娜塔莉·波特曼满身滚烫的粗粉的照片的链接。所以他很自然地点击了它,打开了恶意网页。
  3. 浏览器在页面上运行JavaScript并向TBtF银行的管理后端站点发出AJAX POST请求。因为Joe已经登录到该站点并且有一个活动会话,所以银行应用程序接受命令并将数十亿美元电汇到Jack的离岸银行帐户。

而Jack也可以很容易地使用同样的技术来获取数千个帐号和pins,或者银行经理Joe通过他的帐户可以访问的任何其他信息。

幸运的是,同源策略在大多数情况下可以保护我们免受这些类型的攻击,因为Jack的恶意页面托管在与银行应用程序不同的域上,因此不允许对银行应用程序进行XHR。尽管恶意页面可能仍然包含向银行应用程序发出GET请求的图像,因此重要的是不要通过GET请求启动有副作用的操作,并且应用程序要检查它们收到的请求的referrer头,并利用反CSRF令牌。

票数 27
EN

Stack Overflow用户

发布于 2012-07-14 00:27:36

基本上,这意味着-只有来自相同域的脚本才能不受限制地访问彼此的对象和属性(因此,如果您有一个定义了命名函数的.js文件,则可以从同一域中托管的任何其他文件中调用它)。

因此,如果您提供的是来自不同域的脚本,请务必应用限制。

该策略之所以存在,是因为在不同的域中插入指向某个javascript文件的链接太容易了(比如,一些javascript代码会注入指向这样一个文件的链接)。这是一个安全风险-你真的只想要来自你要执行的站点的代码,而不是任何存在的代码。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11474336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档