星期六, 10月 29, 2016

特定資料夾下禁執行php

由於可以上傳檔案,所以就有可能被丟上php,或產生php script之類的檔案
最好的辦法就透過白名單的方法,只限定某些資料夾執行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>

沒有留言: