我的php页面中有一个表单。在这个页面中,我打开一个窗口弹出窗口。在这个弹出窗口中有一些字段。我们填写表格并提交。提交表单后,我们会向用户发送邮件。基本上它是一个表格,用户可以通过发送邮件给他们的朋友参考网站。 不幸的是有人攻击我的网站并使用我的PHP脚本发送邮件。 所以,我想限制从外部服务器访问PHP脚本。 我该怎么做才能限制访问。 我尝试了一些选择,但没有成功。
答案 0 :(得分:1)
有两种方法可以缓解这种情况,完全停止这种情况是不可能的。
使用HTTP Referer:
$referer = parse_url($_SERVER['HTTP_REFERER']);
$allowedDomain = 'yourdomain.com';
if ($referer['host'] == $allowedDomain){
//Process your mail script here.
}
请注意,您不能信任HTTP_REFERER值。它很容易被欺骗。
使用代币:
生成随机令牌并将其放在表单POST中,如:
if (!isset($_POST['submit'])){
$_SESSION['random_code'] = rand(0, 1000000);
}else{
if ($_POST['random_code'] == $_SESSION['random_code']){
//process your mail script here
//reissue session code
$_SESSION['random_code'] = rand(0, 1000000);
}
}
<input type='hidden' name="random_code" value="<?php echo $_SESSION['random_code'];?>">
在会话中保存此随机代码。提交表单时,将提交的random_code值与会话中保存的代码进行匹配。如果两者相同,则处理您的邮件脚本。
通过这种方式,攻击者必须首先打开您的页面,获取随机代码,然后提交您的表单。它不会阻止这种攻击,但肯定会减慢他的进程。