是否存在确保POST数据来自特定主机的方法


Is there anyway to ensure POST data is coming from a specific host?

我有一个PHP脚本,其中POST数据来自已知来源非常重要。从"相似标题"来看,没有真正的方法可以做到这一点,因为标题可以被欺骗。SERVER_ADDR也可以被欺骗吗?这是否可以用作某种验证数据是从哪里发布的?

撇开PHP不谈,依赖于请求似乎来自的IP地址是一种相当弱的安全形式。您应该考虑使用HTTPS将单个客户端证书分发给每个可信源。

SSL一开始可能会让人望而生畏,但是您在这里需要的东西一点也不复杂,通过学习它,您将获得一项宝贵的技能。

if($_SERVER['REMOTE_ADDR'] != '127.0.0.10') {
    die('Not allowed!);
}
// rest of script...

$_SERVER['REMOTE_ADDR']不是来自客户端提供的头(它是由apache提供的,来自网络堆栈),不能被欺骗。