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)
我有设计错误或只是做错了吗?
什么是"最佳实践"解决方案?
"最佳实践"会将入口点的数量减少到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)
您将无法从浏览器访问根目录之外的任何文件(即,就像您尝试使用 Javascript 所做的那样)。将文件存储在根目录之外的全部目的是使客户端无法访问它们。
将注册代码放置在文档根目录中是必要且足够安全的。