簡體   English   中英

通過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.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM