php - 保护 PHP 被其他站点访问
问题描述
我有一个 PHP 页面,只有其他站点可以访问以进行轮询(有点像 webhook)。我不希望任何用户尝试访问/访问它。如何确保通过特定的来源/方式访问它?
例如:
当网站检查我网站上的新数据时,他们将访问一个名为check.php
. 他们将发送POST
和GET
检查信息。这是我为该页面提供的示例代码:
<?php
if(empty($_GET['name']) || empty($_GET['email']) || $_POST['secret-code'] !== 'abc123') {
echo "error";
exit();
} else {
$name = $_GET['name'];
$email = $_GET['email'];
echo 'Here is the info you requested...';
}
?>
我怎样才能更加安全?$_GET
如果他们要发送自己的参数和$_POST
参数来请求数据,我想确保没有人可以访问它。我可以用代码甚至标题做什么?感谢您的任何帮助
解决方案
一种选择是验证请求中的特定用户数据,例如预定的密码或密钥。这是最不安全的方法。
另一种选择是只允许来自单一来源的网络连接。您可以通过在每次发出请求时检查客户端的 IP 来做到这一点。如果您采用此路线,请务必通过密码进行验证,因为 IP 欺骗是可能的。
更安全的方法是获取客户端信息请求的一部分并将其直接发送回客户端,验证他们是否向您发送了此信息(这就像 2 因素身份验证)。
最安全的方法是让客户端创建一个加密签名的密钥,然后您可以验证它是否已由他们签名。
这可以使用openssl_sign()和openssl_verify()函数来完成。
推荐阅读
- javascript - 如何在 JavaScript 中为特殊条件设置正则表达式?
- facebook - Facebook Marketing Api 错误:(#2635) 您正在调用已弃用的广告 API 版本。请更新到最新版本:v3.2。”
- android - 自动点击提交按钮以及如何通过提交按钮的时间限制?
- angularjs - LocalStroage:计算本地存储中的项目数并使用 AngularJS 在 UI 中显示
- java - 来自hackerrank的特殊回文
- excel - 检查文件夹并比较 txt 文件的确切列表。还有一个带有文件夹选择器的公共变量,我无法在 msgbox 中显示
- reactjs - 如何在 LineChart 上正确获取 xAxis?
- xml - 如何将 DITA xml 转换为 CQ xml?
- c++ - 快速排序函数 C++ 1 参数 - 向量
- ruby-on-rails - 嵌套分组 ActiveRecord 的代码建议 | 导轨 5.2