通过 jquery ajax 请求访问根目录之外的 php 文件


Accessing php file outside root directory via jquery ajax request

我读到将包含潜在安全风险内容的 php 文件存储在根目录之外是一种很好的做法。

现在我有 php 文件,其中包含用于处理注册/登录的内容。这些位于根目录之外。现在我通过jquery捕获表单内容并将其发送到这个php文件。

但这似乎在js/jquery中是不可能的:

$.ajax({
    type: "POST",
    url: "../php_includes/register.inc.php", //beyond root path
    data: data,
    })
    .done(function(data, status) {
            //...
    });

我是否有设计错误或只是做错了什么?

这里的"最佳实践"解决方案是什么?

"最佳实践"会将入口点的数量减少到 1。而不是index.phplogin.phpregister.php你只有一个文件handler.php来处理所有传入的请求(由重写规则辅助)。

handler.php引导应用程序,并包含确定应如何处理请求的路由信息。应用程序中的模块可以注册路由,这就是激活代码的方式。

您的所有代码都可以存储在 webroot 之外,只公开handler.phphandler.php可以像这样简单:

<?php
include(__DIR__ . "/../includes/bootstrap.php");

重写规则以捕获所有请求:

RewriteEngine on
RewriteRule ^(.*)$ handler.php?path=$1 [QSA]
您将

无法从浏览器访问根目录之外的任何文件(即,就像您尝试使用Javascript一样)。将文件存储在根目录之外的全部意义在于客户端无法访问它们。

将注册码放在文档根目录中是必要且安全的。

您宁愿将与安全相关的东西(如配置文件等)存储在外部(不可访问)目录中。但是,如果您需要访问存储在这些文件中的信息,则必须创建一个控制器,该控制器将过滤访问并在需要时以安全的方式提供信息。

Apache 不会提供不在网站根目录中的文件。