2011-12-09 13 views
4
私は安全なPHPファイルのアップロードを行うことが課題に取り組んでいます

で固定し、私のクライアントはhttp://www.acunetix.com/websitesecurity/upload-forms-threat.htmPHPファイルのアップロードがhtaccessファイル

我々は上に述べたすべてのガイドラインに従ってくださいすることができますウェブサイト上のガイドライン言及に従うことを望んで作りますこのサイトはhtaccessルールから受け入れます。彼らは次のことを言及しています。

Define a .htaccess file that will only allow access to files with allowed extensions. 
Do not place the .htaccess file in the same directory where the uploaded files will be stored. It should be placed in the parent directory. 
A typical .htaccess which allows only gif, jpg, jpeg and png files should include the following (adapt it for your own need). This will also prevent double extension attacks. 

deny from all 
<Files ~ "^\w+\.(gif|jpe?g|png)$"> 
order deny,allow 
allow from all 
</Files> 
If possible, upload the files in a directory outside the server root. 
Prevent overwriting of existing files (to prevent the .htaccess overwrite attack). 
Create a list of accepted mime-types (map extensions from these mime types). 
Generate a random file name and add the previously generated extension. 
Don’t rely on client-side validation only, since it is not enough. Ideally one should have both server-side and client-side validation implemented. 

gif、jpg、png以外のファイルは実行されません。しかし、htaccessがそのフォルダにアクセス権を持ち、htaccessを上書きすることができるように、私たちが画像をアップロードするフォルダにhtaccessを置くことは望ましくありません。したがって、ファイルをルートレベルに保つように指示します。

ファイルをルートレベルにして、イメージタイプだけを実行してから私のPHPスクリプトをどのように実行すればいいのか知りたいですか?このhtaccessをルートレベルで追加すると、コースから私のPHPスクリプトが動作せず、パーミッションエラーが返されます。この仕事を得るために奮闘する。

このセキュリティチェックを行うために、この作業や他の効果的な方法を手伝ってもらえますか?私たちはシステム上にセキュリティの抜け穴を残したくありません。

ご協力いただければ幸いです。

ありがとうございます。

答えて

4

コードは、イメージファイルにエンコードすることができますので、あなたは、このディレクトリのPHPエンジンを無効にする必要があります。

<IfModule mod_php5.c> 
    php_flag engine off 
</IfModule> 

それとも、あなたは.htaccessファイルで、その後、あなたはそれを行うことができますことを設定できない場合あなたのhttpd.confまたはvhost confファイル内にあります:

<VirtualHost *:80> 
    # ... 

    <Directory /path/to/webroot/path/to/upload/folder> 
     deny from all 
     <Files ~ "^\w+\.(gif|jpe?g|png)$"> 
      order deny,allow 
      allow from all 
     </Files> 
     <IfModule mod_php5.c> 
      php_flag engine off 
     </IfModule>  
    </Directory> 
</VirtualHost> 
+0

ソリューションのためのmmmshuddupありがとうございます.htaccessファイルにアクセスできます。ちょうどそれが可能ならばそれをフォルダに制限することを知りたい。私はpublic_htmlフォルダに.htaccessを持つことができ、public_html/user_uploaded_filesフォルダ内のスクリプトをブロックしたいと思います。したがって、php_flagエンジンオフコードは、user_uploaded_filesフォルダ内のコードのみをブロックする必要があります。どうもありがとう。 – Harshal

+0

public_html/user_uploaded_filesディレクトリの_new_ .htaccessファイルを、そのパスが 'public_html/user_uploaded_files/.htaccess'になるようにし、そこに' php_flag engine off'を入れます。 –

+0

それがポイントです。以前も同じことが考えられましたが、ハッカーが上書きできるように、書き込み権限を持つforlderに.htaccessファイルを保存すべきではないと多くの人が勧めました。 htaccessをルートレベルに保ち、user_uploaded_filesフォルダ内のコンテンツをブロックしたい。それは実践ですか?あなたの返信をありがとう。 – Harshal

関連する問題