跨源资源共享的安全性

时间:2012-11-05 23:24:55

标签: ruby-on-rails security cors

我在2个不同的域上有2个ruby on rails app(比如 www.exampleA.com www.exampleB.com 。我想在两者之间共享资源2个应用程序,我正在使用CORS:

exampleA.com exampleB.com 发送http POST请求。

exampleB.com 我正在检查request.env['HTTP_ORIGIN']以确保请求来自 exampleA.com 。如果为true,我通过设置响应头来响应以允许http post请求。

我的问题是我可以使用request.env['HTTP_ORIGIN']作为验证请求者身份的唯一检查吗?

来自 www.exampleC.com 的某人是否可以假装他们的HTTP_ORIGIN看起来像 www.exampleA.com 并发布恶意数据?如果是这样,验证请求者身份的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

Origin是多个header fields that cannot be set for a XHR request by page authors中的一个。因此,您可以安全地信任XHR请求的 Origin 信息。

但攻击者仍有可能直接发送带有恶意数据的伪造请求。因此,您仍然需要验证传入的请求。

答案 1 :(得分:0)

很抱歉,但是假设大多数客户提供的数据,包括来源都很容易,因此它不应该用于任何类型的安全性。