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

Raf*_*ner 4 javascript php ajax jquery

我读到了将包含潜在安全风险的php文件存储在根目录之外的好习惯.

现在我有php文件包含处理注册/登录的东西.这些都在根目录之外.现在我通过jquery捕获表单内容并将其发送到此php文件.

但这似乎不可能与js/jquery:

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

我有设计错误或只是做错了吗?

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

Hal*_*yon 8

"最佳实践"会将入口点的数量减少到1.而不是拥有index.php,login.php并且register.php您只有一个文件handler.php可以处理所有传入的请求(由重写规则辅助).

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

您的所有代码都可以存储在webroot之外,只有handler.php暴露.并且handler.php可以如此简单:

<?php
include(__DIR__ . "/../includes/bootstrap.php");
Run Code Online (Sandbox Code Playgroud)

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

RewriteEngine on
RewriteRule ^(.*)$ handler.php?path=$1 [QSA]
Run Code Online (Sandbox Code Playgroud)


JSK*_* NS 4

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

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