Plesk/PHP 只接受来自您所在域的请求

Plesk/PHP Accept Requests Only From Your Domain

我目前正在开发一个类似论坛的网站,目的是学习开发 Web 应用程序和应用程序安全性。网站的某些部分受凭据保护。

但是有一个 .php 脚本显示 returns 最新消息。我的 news.php(通过 javascript 和 jquery ajax)请求 return_news.php 以获取有关最新消息的 json 信息文件.而此时一个问题就出现了。任何人都可以发送 return_news.php 请求并在他们的网站上显示我的数据。我想做到只有我主机上的文件才能向我的端点发出请求或使数据只能通过我的域访问 https://www.example.com 并拒绝来自其他来源的任何请求。

我做了什么:

我在网上做了一些调查。阅读一些关于 CORS 和 .htaccess 文件的文章。但是我的主机在云服务器上,我认为我无权访问它。而且我找不到检查我的主机当前配置的方法。这个问题似乎与 CORS 有关,但我找不到关于如何实现我的目标的详细解释。

总结:如何配置我的网站,以便内容只能通过我的域访问(例如 https://www.example.com),我的 api 响应仅来自我的域和我的内容的请求不能只通过get请求获取到其他网站显示吗?

默认情况下,出于安全原因,浏览器会阻止 ajax 跨域请求的响应。这意味着默认情况下,来自其他域的任何网站向您的 return_news.php 创建 ajax 请求将不会得到响应(尽管会发出请求)。

还有一个 用于指定是否允许 CORS。因此,在您的情况下,可以肯定的是,您可以将其设置在 return_news.php 文件的顶部

header("Access-Control-Allow-Origin: https://www.example.com");

这指示浏览器 return 响应只有 ajax 来自 www.example.com 域下的页面。

您可以通过访问任何其他域页面来检查它,并在 javascript 控制台上对其进行测试,然后检查网络选项卡以获取更多信息。

fetch('https://www.example.com/return_news.php').then(function(response) {console.log(response);})