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

时间:2014-11-14 10:31:48

标签: javascript php jquery ajax

我读到了将根据目录中包含潜在安全风险的php文件存储起来的良好做法。

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

但是这似乎不可能用js / jquery:

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

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

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

3 个答案:

答案 0 :(得分:8)

“最佳做法”会将入口点的数量减少到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]

答案 1 :(得分:3)

您无法从浏览器访问根目录之外的任何文件(例如,您正在尝试使用Javascript)。将文件存储在根目录之外的全部内容是客户端无法访问它们。

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

答案 2 :(得分:2)

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

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

相关问题