1

Web ルート フォルダーにイメージ ストレージ用のファイル ディレクトリがあります。そのフォルダーを保護する方法を知りたいです。人々がそのフォルダーにスクリプトをアップロードできないようにします。ファイル拡張子を確認します。画像でない場合は、そのフォルダーに保存されません。

しかし、偽の拡張機能は簡単に実行できます。誰かがスクリプトをファイル ディレクトリにアップロードし、ブラウザからアクセスするとどうなるでしょうか。

そのため、そのフォルダー内でスクリプトが実行されないようにし、画像の実行のみを許可する方法が必要です。

htaccessでそれができることは知っていますが、設定方法がわかりません。私の .htaccess ファイルは次のようなものです:

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
ForceType application/octet-stream
<FilesMatch "(?i)\.(gif|jpe?g|png)$">
  ForceType none
</FilesMatch>
Options All -Indexes

しかし、それは機能していません。そのフォルダーにphpファイルを保存し、ブラウザーからアクセスしようとしましたが、まだアクセスできます。これを機能させる方法を知っていますか?または、これに対するより安全なアプローチがある場合は、教えてください。

ありがとうございました

4

1 に答える 1

1

余分なハンドラーを追加しただけで、他のハンドラーを削除していないため、機能していないと思います。

次の内容を含む別の .htaccess ファイルを、(match ディレクティブをいじるよりも) 保護するフォルダーに配置するのが最も簡単です。

# Fix PHP, you should do matching commands for JSP and ASP, & html
RemoveType application/x-httpd-php php
# .... add the other remove-handler statements here .... #

# Optionally make these equivalent to text files.
# UPDATE: Taken this out as you dont want people to see PHP files at all
#AddType text/html php

# To disable cgi and server side includes & indexes
# You need to check the setup of Apache, some of the file types
# listed should already be handled as CGI (.pl, .py, .sh)
Options -ExecCGI -Includes -Indexes

# Completely block access to PHP files
<FilesMatch "\.(php|phps|html|htm|jsp|asp)$">
    Order allow,deny
    Deny from all
</Files>
# Add in any additional types to block

これは PHP と CGI をカバーしています。JSP と ASP に対応するコマンドを実行する必要があります。

更新: PHP ファイルへのアクセスを完全にブロックするコードを追加しました。また、PHP ファイルをテキスト ファイルに変換する行をコメント アウトしたことにも注意してください。

于 2012-06-25T13:06:16.610 に答える