gpt4 book ai didi

php - 停止来自不同域 PHP 的发布数据

转载 作者:可可西里 更新时间:2023-11-01 12:26:02 24 4
gpt4 key购买 nike

我是 PHP 的初学者。

我想做的是阻止来自另一个网页的发布数据。

我遇到的问题是假设有人复制了我的表格并将其粘贴到他们的网站上。我希望能够阻止发布数据在我的电子邮件表单上运行脚本。

我该怎么做?如果我不够清楚,请告诉我。

我的 PHP 联系表单在一页上运行,带有条件语句。即如果数据检查出来,提交。

最佳答案

“接受的答案”存在安全漏洞。相反,您应该使用更安全的方法。一个简单的例子:

第 1 步: 禁用生成表单的页面框架 (.php),在顶部添加:

header('X-Frame-Options: Deny');

第 2 步:(重要部分!): 为了避免 XSS 和第 3 方漏洞利用,您应该创建可过期的验证。例如:

  • ASP.NET 内置表单使用动态输入csrf(示例值:gtlkjh29f9ewduh024cfvefb)
  • WordPress 内置表单使用动态输入nonce(示例值:340297658942346)

因此,如果您在没有内置临时 token 验证方法的自定义平台上,请实现您的方法。一个简单的概念:

<?php  
$secret_key = 'fjd3vkuw#KURefg'; //change this
$encrypted_value = Cryptor::encrypt( time(), $_SERVER['REMOTE_ADDR'] . $secret_key);
?>
<form>
...
...
<input value="<?php echo $encrypted_value;?>" name="temp_random" type="hidden" />
</form>

(密码为 here )

提交后,检查:

if(!empty($_POST)){

// If REFERRER is empty, or it's NOT YOUR HOST, then STOP it
if( !isset($_SERVER['HTTP_REFERRER']) || parse_url($_SERVER['HTTP_REFERRER'])['host'] != $_SERVER['HTTP_HOST'] ){
exit("Not allowed - Unknown host request! ");
}

// Now, check if valid
if ( Cryptor::decrypt( $_POST['temp_random'], $_SERVER['REMOTE_ADDR'] . $secret_key) < time() - 60* 15 ) {
exit("Not allowed - invalid attempt! ");
}

...........................................
... Now, you can execute your code here ...
...........................................

}

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

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