2010-11-15 37 views
0

我只是好奇,如果有一種方法可以使用.htaccess文件或類似的東西來禁用諸如shell_exec()之類的東西,而不是全局的,但僅限於特定的子域或目錄(可能會禁用fopen()子目錄)。我想到,在我與朋友共享子域空間的共享主機上,他可以使用PHP來查看他自己以外的目錄。Apache和PHP的安全性,限制子域名

也許我可以使用mod_rewrite並通過一個PHP腳本在任何地方發送任何命中,在將請求轉發到它所在的位置之前禁用某些事情?這是否會起作用,並會導致顯着的性能損失?

+0

儘管您的功能列表需要非常大。相關:http://stackoverflow.com/questions/3115559/exploitable-php-functions/3451100它不會阻止我這樣做:$ y = str_replace('z','e','zxzc'); $ y(「惡意代碼」); – Cheekysoft 2010-11-15 13:17:46

回答

1

可以通過編程方式做到這一點:

ini_set('disable_functions', 'fopen,shell_exec');

.htaccess

php_value disable_functions fopen,shell_exec

不應該有任何性能下降。我懷疑你會在for()while()foreach()循環內重複更改設置。

+0

我建議使用'php_admin_value'而不是'php_value',以便參數不能通過.htaccess覆蓋。請參閱:[configuration.changes.php](http://www.php.net/manual/en/configuration.changes.php) – lucaferrario 2013-07-01 10:20:34

+0

@lucaferrario爲什麼任何一位正確思維的人會重寫同一文件中的某些內容? – stillstanding 2013-12-26 23:45:30

+0

惡意軟件(受攻擊的joomla或wordpress)可能會編寫新的.htaccess並覆蓋設置......或者簡單地說,如果您是服務提供商,您的客戶之一可能... – lucaferrario 2013-12-28 14:58:17

0

我認爲需要在php.ini文件中改變這些東西。某些主機允許您在文件結構中包含多個php.ini文件。如果您處於共享主機環境,那麼您可能會爲所有共享帳戶擁有一個php.ini文件。主機意識到這是一個問題,所以他們讓你有你自己的主目錄中的子目錄...檢查您的主機。