由於可以上傳檔案,所以就有可能被丟上php,或產生php script之類的檔案
最好的辦法就透過白名單的方法,只限定某些資料夾執行PHP的權限,再配合禁寫入PHP
用白名單比較安全,不過也比較難,有時還忘記開權限
所以反過來用黑名單來實做
將系統結構分成兩種
透過.htaccess達成
以public資料夾當Ap Data
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
<FilesMatch "(?<!^index)\.php$">
RemoveHandler .php .php3 .phtml
RemoveType .php .php3 .phtml
php_flag engine off
#php_admin_flag engine off
</FilesMatch>
最好的辦法就透過白名單的方法,只限定某些資料夾執行PHP的權限,再配合禁寫入PHP
用白名單比較安全,不過也比較難,有時還忘記開權限
所以反過來用黑名單來實做
將系統結構分成兩種
- Ap Code //開放執行PHP
放Ap相關的程式碼 - Ap Data //禁止執行PHP
操作系統產生的data, ex, log, cache, 上傳的檔案
透過.htaccess達成
以public資料夾當Ap Data
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
<FilesMatch "(?<!^index)\.php$">
RemoveHandler .php .php3 .phtml
RemoveType .php .php3 .phtml
php_flag engine off
#php_admin_flag engine off
</FilesMatch>