[英]Deploy a PHP web application onto a shared web server and protect my code from being read
[英]How to protect my php files on the server from being requested
我是php和web的新手,現在我正在學習php中的oop以及如何將我的程序分成每個.php文件中的類。 之前所有我都知道php程序,我可能將這些文件放到我的根文件夾中
因此,每當客戶端在瀏覽器中請求任何內容時
http://www.example.com/home.php
http://www.example.com/about.php
http://www.example.com/products.php
http://www.example.com/contact.php
沒問題,文件會將正確的頁面輸出到客戶端。
現在,我有一個問題。 我在根文件夾中也有這樣的文件
如何通過在瀏覽器中輸入這樣的內容來阻止用戶請求這些文件?
http://www.example.com/resources/myFunctions.php
我一直在考慮的方法是在它們的每個文件的頂部添加這一行exit;
或者,我知道有一個名為.htaccess的東西,它是一個影響Apache工作方式的Apache配置文件。
現實生活應用程序如何解決這個問題?
您確實可以使用任何可用的服務器端配置選項。
根據您的托管設置方式,您可以修改PHP的包含路徑( http://php.net/manual/en/ini.core.php#ini.include-path )或將各種文檔/目錄限制為Apache站點配置中的特定主機/子網/無訪問權限( https://httpd.apache.org/docs/2.4/howto/access.html )。
如果您使用的是共享主機,則通常無法實現此級別的鎖定,因此您無法使用易於處理的文件命名約定(即classFoo.inc.php和classBar)的Apache重寫規則。 inc.php),。htaccess文件並使用FilesMatch指令阻止訪問* .inc.php - http://www.askapache.com/htaccess/using-filesmatch-and-files-in-htaccess/
FWIW所有其他方面都相同,Apache基金會表示在服務器端配置中使用.htaccess更好/更有效。如果您可以使用該選項。
現實生活中的應用程序通常在項目的根目錄中使用所謂的public/
或webroot/
文件夾,其中所有要通過Web請求的文件都駐留在該文件中。
然后,此.htaccess
文件將所有HTTP請求轉發到此文件夾,並使用內部URL重寫,如下所示:
RewriteRule ^$ webroot/ [L] # match either nothing (www.mydomain.com)
RewriteRule ^(.*)$ webroot/$1 [L] # or anything else (www.mydomain.com/home.php)
.htaccess使用正則表達式來匹配請求URI(主機名后面的URL中的所有內容),並在此示例中使用webroot/
作為webroot/
。
www.mydomain.com/home.php
變得www.mydomain.com/webroot/home.php
, www.mydomain.com/folder/file.php
成為www.mydomain.com/webroot/folder/file.php
注意:這在瀏覽器的URL中不可見。
如果配置正確,常規HTTP請求將無法訪問位於此文件夾之外的所有文件。 然而,您的應用程序(您的PHP腳本)仍然可以訪問這些私有文件,因為PHP在您的服務器上運行,因此它具有對這些文件的文件系統訪問權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.