gpt4 book ai didi

php - 防止从不同域 PHP 发布数据

转载 作者:行者123 更新时间:2023-11-29 11:11:27 24 4
gpt4 key购买 nike

我的 php 页面中有一个表单。在此页面中,我打开一个弹出窗口。在此弹出窗口中有一些字段。我们填写表格并提交。提交表单后,我们向用户发送一封邮件。基本上,它是一种用户可以通过向 friend 发送邮件来向其 friend 提供网站引用的形式。不幸的是,有人黑了我的网站并使用我的 php 脚本发送邮件。所以,我想限制来自外部服务器的 php 脚本的访问。我应该做什么来限制访问。我尝试了一些选项但没有成功。

最佳答案

有两种方法可以缓解这种情况,但完全阻止这种情况是不可能的。

使用 HTTP Referer:

$referer = parse_url($_SERVER['HTTP_REFERER']);
$allowedDomain = 'yourdomain.com';

if ($referer['host'] == $allowedDomain){
//Process your mail script here.
}

请注意,您不能信任 HTTP_REFERER 值。它很容易被欺骗。

使用 token :

生成一个随机 token 并将其放入您的表单 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'];?>">

将此随机代码保存在您的 session 中。提交表单后,将提交的 random_code 值与 session 中保存的代码进行匹配。如果两者相同,则处理您的邮件脚本。

这样,攻击者必须首先打开您的页面,获取随机代码,然后提交您的表单。它不会阻止这次攻击,但肯定会减慢他的进程。

关于php - 防止从不同域 PHP 发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com