[英]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.php
, login.php
和register.php
,而是只有一個文件handler.php
來處理所有傳入的請求(由重寫規則輔助)。
handler.php
引導您的應用程序並包含確定請求應該如何處理的路由信息。 應用程序中的模塊可以注冊路由,這就是代碼激活的方式。
您的所有代碼都可以存儲在webroot之外,只顯示handler.php
。 而handler.php
可以像下面這樣簡單:
<?php
include(__DIR__ . "/../includes/bootstrap.php");
重寫規則以捕獲所有請求:
RewriteEngine on
RewriteRule ^(.*)$ handler.php?path=$1 [QSA]
您無法從瀏覽器訪問根目錄之外的任何文件(即,就像您嘗試使用Javascript一樣)。 在根目錄之外存儲文件的整個目的是使客戶端無法訪問它們。
將注冊碼放在文檔根目錄中是必要且安全的。
您寧願將與安全相關的內容(如配置文件等)存儲在外部(不可訪問)目錄中。 但是,如果您需要訪問存儲在這些文件中的信息,則必須創建一個控制器,該控制器將過濾訪問並在需要時以安全的方式提供信息。
Apache不會提供不在網站根目錄中的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.