是否可以限制允许将 POST 信息发送到 process.php 文件的域。
例如,在 process.php 文件的顶部(它使用表单提交中的 $_POST 数据),我想添加类似的内容。
<?php
Allowed Domains: domain.com, domain2.com
?>
并且只有从允许的域提交的表单才会使用任何帖子信息。
这是为了防止有人在自己的服务器上创建 HTML 表单并操纵表单来尝试利用 process.php 中的任何类型的漏洞
基本上我有一个 process.php 文件,我想接受来自多个域的表单提交。
e.g. Domain.com/form.html >>> http://MainDomain.com/process.php
or Domain2.com/form.html >>> http://MainDomain.com/process.php
我希望允许任何具有允许域列表中的表单的页面都能够在 process.php 上运行。 如果未拒绝的域提交到 process.php,我希望它被拒绝。
<?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
}
?>
_SERVER[HTTP_HOST]
是否在您允许的域列表中。 该值由服务器设置,因此客户端无法欺骗。 请注意,这是代码运行的域,这似乎就是您的问题所问的。 您的意思是请求发送的域
from?
if (!in_array($_SERVER['REMOTE_ADDR'], array('ip1', 'ip2'))) die('Not allowed');
所有以 HTTP 开头的 SERVER 变量都可以由调用者更改,因此它们不提供保护。
在后端,我解密并检查令牌是否存在,并且时间戳不早于几秒。
我相信这是安全的,但希望得到一些反馈