php - 保护 PHP 被其他站点访问

标签 php post get http-headers polling

我有一个 PHP 页面,只有其他站点可以访问该页面进行轮询(有点像 Webhook)。我不希望任何用户尝试访问/访问它。我如何确保它是通过特定来源/方式访问的?

例如:

当网站检查我网站上的新数据时,他们将访问一个名为 check.php 的页面。他们将发送 POSTGET 信息进行检查。这是我为该页面提供的示例代码:

<?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 参数来请求数据,则没有人可以访问此内容。我可以用代码甚至标题做些什么吗?感谢您的帮助

最佳答案

一种选择是验证请求中的特定用户数据,例如预定的密码或 key 。这是最不安全的方法。

另一种选择是仅允许来自单一来源的网络连接。您可以通过在客户端每次发出请求时检查其 IP 来做到这一点。 如果您采用此路线,请确保也通过密码进行验证,因为可能存在 IP 欺骗。

一种更安全的方法是获取客户端信息请求的一部分并将其直接发送回客户端,验证他们是否向您发送了此信息(这类似于双因素身份验证)。


最安全的方法是让客户端创建一个加密签名 key ,然后您可以验证该 key 是否已由他们签名。

这可以使用 openssl_sign() 来完成和 openssl_verify()功能。

关于php - 保护 PHP 被其他站点访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56657785/

相关文章:

php - Laravel 中的 hasOne 关系不起作用?

php - 当日期为 UNIX 时间戳格式时,如何按日期对记录进行分组?

php - iOS 推送通知密码

node.js - 如何在我的 HTTP POST 请求正文中发送一个 'ogg' 文件?

javascript - PHP区分javascript和用户点击?

javascript - 如何将 HTTPS 获取响应传输到对象中

php - jquery如何获取点击的div的id

laravel - Vuejs Axios POST 请求从 Laravel 后端获取 HTTP422 错误

java - 如何从 Spring Boot Controller 返回超链接?

Python3 编写 HTTP GET 消息