2012-12-17 7 views
5

私はユーザーがサブディレクトリにファイルをアップロードできるサイトを持っています。私は、潜在的な悪意のあるコードのアップロードチェックをフィルタリングしています。私は物事のセキュリティの面で新しいので、これはサーバーへのアップロードを安全にするためのベストプラクティスのように見えますか?そうでない場合、または私が何かを欠いている場合、正しい方向に私を向けることができますか?これはアップロードされたファイルのための良いフィルタですか?

//arrays with acceptable file extensions/types -- default validations set to false 
$acceptable_ext = array('jpg', 'JPG', 'jpeg', 'JPEG', 'gif', 'GIF', 'png', 'PNG'); 
$acceptable_type = array('image/jpeg', 'image/gif', 'image/png'); 
$validated_ext = 0; 
$validated_type = 0; 

//validate file extension and type 
if($_FILES && $_FILES['file']['name']) { 

    $file_info = pathinfo($_FILES['file']['name']); 

    //validate extension 
    for ($x=0; $x < count($acceptable_ext); $x++) { 
     if($file_info['extension'] == $acceptable_ext[$x]) { 
      $validated_ext = 1; 
     } 
    } 
    //validate type 
    for ($x=0; $x < count($acceptable_type); $x++) { 
     if($file_info['type'] == $acceptable_type[$x]) { 
      $validated_type = 1; 
     } 
    } 
} 

if($validated_ext && $validated_type) { 
    //upload file to the server blah blah 
} 
+0

は私にとってうまく見えますが、なぜ2ループですか?最初のループで両方のチェックを実行できませんでしたか? – NSjonas

+0

配列は2つの異なる長さです – Hat

+1

@flapjacks: 'if(in_array($ file_info ['type']、$ acceptable_type))' ...ちょっと言って...どちらのループも必要ありません。 :) – cHao

答えて

1

セキュリティ設定hereをチェックアウトすることができます。

MIMEタイプ、ini config、.htaccessなどを確認すると、リンクごとにセキュリティが強化されます。

関連する問題