我在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
并发布恶意数据?如果是这样,验证请求者身份的最佳方法是什么?
答案 0 :(得分:3)
Origin是多个header fields that cannot be set for a XHR request by page authors中的一个。因此,您可以安全地信任XHR请求的 Origin 信息。
但攻击者仍有可能直接发送带有恶意数据的伪造请求。因此,您仍然需要验证传入的请求。
答案 1 :(得分:0)
很抱歉,但是假设大多数客户提供的数据,包括来源都很容易,因此它不应该用于任何类型的安全性。