gpt4 book ai didi

php - 如何为检查请求的来源提供更多安全性

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

我正在开发一个 PHP 网络应用程序,我想为应用程序提供更多的安全性,以便没有人可以轻易破坏功能。

关于我的问题的简要说明:在一个模块中,有一个阶段我正在检查请求的来源(这个请求来自哪里)

目前,我正在使用 HTTP_REFERRER 变量(在 php 中可用)。我正在使用一个特定的 URL(例如 http://www.example.com/test.php)检查此变量值。如果存在完全匹配,那么只有我会调用进一步的操作。

我对上述方法有点困惑,我是应该使用 HTTP_REFERRER 还是检查 IP 地址(如果请求来自任何特定 IP 地址,则为有效请求)?

我还想知道提供安全性的更好方法。

有没有人有想法然后请分享?

提前致谢

最佳答案

网络安全第一课:永远不要相信用户输入。当我说永不时,我的意思是永不。 ;) 在 PHP 中包含 HTTP_REFER var,它很容易被 http header 破坏(来源:http://www.mustap.com/phpzone_post_62_how-to-bypass-the-referer-se)

检查来源的一个可能解决方案是使用表单 token (csrf 保护):http://www.thespanner.co.uk/2007/04/12/one-time-form-tokens/但也不是那么安全,只能使用您自己的来源。

一个简单的CSRF(cross-site request forgery)保护示例:(所以简单。更安全/健壮的解决方案,引用The Rook的回答)

1) 在您的表单页面中,创建某种 token 并将其放入您的 session 和隐藏的表单字段中:

<?php
session_start();
$csrfToken = md5(uniqid(mt_rand(),true)); // Token generation updated, as suggested by The Rook. Thanks!

$_SESSION['csrfToken'] = $token;
?>
<form action="formHandler.php">
<input type="hidden" name="csrfKey" value="<?php echo $csrfToken ?>" />
</form>

2) 在您的表单处理程序中检查 token 是否有效。

<?php
session_start();
if($_POST['csrfKey'] != $_SESSION['csrfKey']) {
die("Unauthorized source!");
}
?>

关于php - 如何为检查请求的来源提供更多安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3132501/

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