限制可以发送PHP帖子信息的域

限制可以发送PHP帖子信息的域,php,forms,Php,Forms,是否可以限制允许将POST信息发送到process.php文件的域 例如,在process.php文件的顶部(它使用表单提交中的$\u POST数据),我想添加如下内容 <?php Allowed Domains: domain.com, domain2.com ?> 我希望允许任何在allowed domains列表中包含表单的页面能够在process.php上运行。如果未被拒绝的域提交到process.php,我希望它被拒绝。POST请求并不总是来自域。它们可以来自任何连接

是否可以限制允许将POST信息发送到process.php文件的域

例如,在process.php文件的顶部(它使用表单提交中的$\u POST数据),我想添加如下内容

<?php
  Allowed Domains: domain.com, domain2.com
?>

我希望允许任何在allowed domains列表中包含表单的页面能够在process.php上运行。如果未被拒绝的域提交到process.php,我希望它被拒绝。

POST请求并不总是来自域。它们可以来自任何连接到互联网的设备。因此,您应该根据IP地址进行过滤

您可以通过创建一个白名单IP地址数组并使用来检查

if (in_array($_SERVER['REMOTE_ADDR'], $whitelist)) {

POST请求并不总是来自域。它们可以来自任何连接到互联网的设备。因此,您应该根据IP地址进行过滤

您可以通过创建一个白名单IP地址数组并使用来检查

if (in_array($_SERVER['REMOTE_ADDR'], $whitelist)) {

您可以检查
\u服务器[HTTP\u主机]
是否在允许的域列表中。此值由服务器设置,因此客户端不会欺骗它。请注意,这是运行代码的域,这似乎就是您的问题所在。您是指发送请求的域吗?

您可以检查
\u服务器[HTTP\u主机]
是否在允许的域列表中。此值由服务器设置,因此客户端不会欺骗它。请注意,这是运行代码的域,这似乎就是您的问题所在。您是指发送请求的域吗?

您可以尝试以下方法

<?php

$allowedDomains = array('www.abc.com', 'www.xyz.com');

$referer = $_SERVER['HTTP_REFERER'];

$domain = parse_url($referer); //If yes, parse referrer

if(in_array( $domain['host'], $allowedDomains)) {
    //Run your code here which will process the $_POST
} else {
    echo "you are not allowed to post at this page";
    exit(); //Stop running the script
}
 ?>

您可以尝试以下方法

<?php

$allowedDomains = array('www.abc.com', 'www.xyz.com');

$referer = $_SERVER['HTTP_REFERER'];

$domain = parse_url($referer); //If yes, parse referrer

if(in_array( $domain['host'], $allowedDomains)) {
    //Run your code here which will process the $_POST
} else {
    echo "you are not allowed to post at this page";
    exit(); //Stop running the script
}
 ?>

您不能通过检查域来实现这一点,因为发送请求的域很容易被用户代理欺骗,您将无能为力。无助


你所关心的是什么。我认为,理想的解决方案是以您希望保护的形式包含随机生成的令牌,并在会话中存储匹配的令牌,并且仅在匹配的情况下才允许发布。从其他域发布的人需要首先在会话中设置令牌,然后以某种方式获取令牌。。如果不查看您创建的表单(或者非常幸运),他们就无法执行此操作。

您无法通过检查域来执行此操作,因为发送请求的域很容易被用户代理欺骗,您将无能为力。无助


你所关心的是什么。我认为,理想的解决方案是以您希望保护的形式包含随机生成的令牌,并在会话中存储匹配的令牌,并且仅在匹配的情况下才允许发布。从其他域发布的人需要首先在会话中设置令牌,然后以某种方式获取令牌。。如果不查看您创建的表单(或者非常幸运的话),他们就无法做到这一点。

但是如果我创建一个允许的域列表,这将过滤IP,不是吗?$\u SERVER['REMOTE\u ADDR']会为您提供IP地址。您必须进行反向DNS查找才能找到域名。如果我使用PuTTY或类似工具从本地计算机发出POST请求,此查找可能会失败。但如果我创建允许的域列表,这将过滤IP,不是吗?$\u SERVER['REMOTE\u ADDR']为您提供IP地址。您必须进行反向DNS查找才能找到域名。如果我使用PuTTY或类似工具从本地计算机发出POST请求,此查找可能会失败。
HTTP\u REFERER
可以被欺骗
HTTP\u REFERER
可以被欺骗我必须让在其他域上创建表单的人非常容易地完成此操作。对他们来说,这听起来太复杂了,永远都不可能实现。@Talon困难的问题有困难的解决办法。查看我链接到你的文章的“预防”部分。如果你不能让任何一个都正常工作,那么你所能做的就是检查HTTP\u REFERER,这几乎不会为你提供任何恶意请求的保护。我必须让在其他域上创建表单的人非常容易。对他们来说,这听起来太复杂了,永远都不可能实现。@Talon困难的问题有困难的解决办法。查看我链接到你的文章的“预防”部分。如果你不能让任何一个正常工作,那么你所能做的就是检查
HTTP\u REFERER
,这几乎不会对恶意请求提供任何保护。这似乎是获得用户IP地址的IP,而不是参考网站的IP。这似乎是获得用户IP地址的IP,而不是参考网站的IP。