1

我有 2 个 ruby​​ on rails 应用程序位于 2 个不同的域上(比如说www.exampleA.comwww.exampleB.com。我想在 2 个应用程序之间共享资源并且我正在使用 CORS:

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

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

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

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

4

2 回答 2

3

Origin是页面作者无法为 XHR 请求设置的几个标头字段之一。因此,您可以放心地信任 XHR 请求的Origin信息。

但是攻击者仍然有可能直接发送带有恶意数据的伪造请求。所以你仍然需要验证传入的请求。

于 2012-11-06T06:18:45.427 回答
0

抱歉,伪造大多数客户端提供的数据(包括来源)非常容易,因此不应将其用于任何类型的安全性。

于 2012-11-05T23:31:19.307 回答