簡體   English   中英

如何保護我的服務器上的php文件不被請求

[英]How to protect my php files on the server from being requested

我是php和web的新手,現在我正在學習php中的oop以及如何將我的程序分成每個.php文件中的類。 之前所有我都知道php程序,我可能將這些文件放到我的根文件夾中

  1. home.php
  2. about.php
  3. products.php
  4. contact.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

沒問題,文件會將正確的頁面輸出到客戶端。

現在,我有一個問題。 我在根文件夾中也有這樣的文件

  1. class1.php
  2. class2.php
  3. 資源/ myFunctions.php
  4. 資源/ otherFunctions.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.phpwww.mydomain.com/folder/file.php成為www.mydomain.com/webroot/folder/file.php

注意:這在瀏覽器的URL中不可見。

如果配置正確,常規HTTP請求將無法訪問位於此文件夾之外的所有文件。 然而,您的應用程序(您的PHP腳本)仍然可以訪問這些私有文件,因為PHP在您的服務器上運行,因此它具有對這些文件的文件系統訪問權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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