gpt4 book ai didi

javascript - 如何正确访问我的 PHP 文件?直接来自 JS 还是通过 "master"PHP?

转载 作者:行者123 更新时间:2023-12-02 14:51:12 24 4
gpt4 key购买 nike

我不确定我是否完全理解站点安全的这一方面,但将 PHP 文件保留在根目录中似乎是一个坏主意,因此我们将它们移动到 PHP 文件夹中,并将该文件夹称为 phpIncludes。一些模糊的问题是:

1) 如何访问 phpInincludes 中的 doStuff.php 文件?来自 JavaScript?让我的 JavaScript 告诉敏感内容所在的文件夹的名称似乎是一个坏主意,如下所示:

 executeAjaxCall("phpFiles/doStuff.php",success,error);

2) 或者来自驻留在 root 上的“主”PHP?处于 root 状态就不能被篡改吗?

$secretVariableThatOnlyThisPHPWouldKnow="bla"; //then check it in the included file? Does that work?
//in JS
executeAjaxCall("masterFile.php?fileNeeded=doStuff");

//in PHP
$secretVar="bla";
include("myPathString/phpIncludes/".$_GET['fileNeeded'].".php");

//in all other INCLUDEable PHP files
if (!isset($secretVar))
{
die();
}
if (!isFromThisDomain)
{
die();
}

(如何执行上次测试?)

我的想法是:“如果有人想要获取 phpInincludes 文件夹中的 PHP 文件,他们不能,但他们可以通过 HTML 访问它们,因此需要验证请求。没有 session 是否可以轻松实现,例如生成doStuff.php 会识别 master.php 中的某些内容并因此完成其工作?或者 session 是可行的方法吗?我实际上想知道“无 session ”场景,因为这使我摆脱了尝试实现反 session 劫持代码的任务(如果我学会了......)。另一方面,我也在想:“变量secretVar不是可访问/可篡改的,因为它位于root上?”

3)按照(2)进行操作,但在另一个文件夹中还有master.php(我们称其为“master”),使其成为非root?在这种情况下,我是否可以使用 getcwd()+字符串操作从主文件夹访问我的 phpInincludes 文件夹?或者有一个“更优雅”(更懒……)的方法吗?

3 看起来很神奇,我在 root 上唯一的文件是 index.php,它只是启动 HTML+JS 并且不执行任何敏感操作。或者我错过了什么?

最佳答案

这与 PHP 文件和文件夹的结构完全无关。唯一重要的是:

当您访问特定URL时会发生什么?

phpFiles/doStuff.php 首先是一个URL。您如何访问它并不重要(“直接”通过浏览器地址栏、通过 AJAX、curl 或其他任何方式);重要的是当您访问该 URL 时会发生什么。确保每次 URL 访问不会发生任何不良情况完全取决于您。

  1. 不要公开公开任何原本不应该存在的网址。如果您有一堆不适合通过 URL 直接访问的 .php 文件,则不要公开公开它们。这要么意味着您通过网络服务器配置阻止对它们的访问(例如,在 .htaccess 文件中拒绝所有),或者您首先将这些文件从公共(public)网络根目录中取出。
  2. 根据需要验证所有公开的 URL 端点中的所有输入和必要条件。用户需要登录才能执行某些操作?验证一下。您需要某些查询参数或 POST 正文数据吗?验证一下。在执行任何操作之前,根据其自身优点验证每个传入请求。是否在每个文件中单独重复此验证代码或集中在某个地方执行此验证代码取决于您。
  3. 根据需要将代码拆分到多个文件中,以使其可重用。请参阅第 1 点和第 2 点,您只需注意哪些文件作为 URL 入口点公开公开,以及在哪个点您需要执行何种类型的验证。

关于javascript - 如何正确访问我的 PHP 文件?直接来自 JS 还是通过 "master"PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36179351/

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