2011-08-21 100 views
6

有什么办法可以确切地知道POST请求源自哪个服务器?POST请求的起源

我想实现一个方法,其中,我可以检查的具体请求,源自我的网站,因此这将有助于我保持我的网站安全

感谢

+0

您是否在寻找推荐人?用户来自哪个页面? –

+0

你真的是指“源自我的网站”,还是你的意思是“源自从我的网站发送到浏览器的页面上的表单”?他们是完全不同的东西。 –

+2

不要依赖引用标头。它不能被信任,并且经常在防火墙中被剥夺,从而泄露有关内部系统的信息。 – Erlend

回答

8

这听起来像你试图实现跨站请求伪造保护,其中您需要确保请求源自您的Web服务器提供的HTML。不要依赖引用头,因为它经常在防火墙中被剥离,并且可以被操纵。

有关如何实施此类保护的一些好消息,请参阅OWASP。基本上,它是这样的:

  1. 生成安全的随机值,并把它贴在用户的会话

  2. 对于每一个HTML表单,包括此值作为隐藏的价值()

  3. 每当POST请求会返回到您的服务器,请检查隐藏字段中的值是否与用户会话中的值相同。如果不是,请拒绝该请求。

因为ALUE是每个用户唯一的,攻击者不能简单地加强与预填充值的形式,并诱骗用户使用JavaScript自动张贴。该请求将被拒绝,因为攻击者不知道伪造形式中的隐藏域包含哪个值。

+0

”每当POST请求返回到您的服务器时,请检查来自隐藏字段的值是否与用户会话中的值相同。“ - 好吧,您低估了我的意思,并没有描述为什么以及如何检查**请求的来源**。 – zerkms

+0

感谢您的洞察力! :D – Anant

+0

zerkms:所以你低估了我是因为我低估了你? 我试图超越这个问题。 “我试图实施一种方法,在这种方法中,我可以检查某个特定请求是否源自我的网站,因此这将帮助我保持我的网站安全” 他想检查_his website_,请求是否源自_his website_ – Erlend

1

你想$_SERVER["REMOTE_ADDR"]