2017-03-25 9 views
2

私は、ユーザが画像をサーバにアップロードすることを許可しているウェブサイトで作業しています。 file_put_contents()が正しい権限を取得するためには、サーバー上のユーザーをwww-data(Apacheサーバーの現在のユーザー)に変更する必要がありました。file_put_contents()を実行するディレクトリに対する正しいアクセス許可

私はこの可能性のあるセキュリティ上の問題、より深い説明を与えることができる経験が豊富な人、より安全な代替案を考えていますか?

答えて

0
  1. wwwの上の別のディレクトリにアップロードしてください。攻撃者が 実行可能ファイルをアップロードできない場合、実行できない場合は実行できれば何でもできます。

  2. アップロードしたファイル名を別の名前に変更します。ファイルをユーザーが指定した名前で保存しないでください。

  3. 読み取り専用ファイルのアクセス許可。

  4. $_FILES['filename']['type'] 
    

    ので、MIMEタイプ

    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $mime = finfo_file($finfo, $_FILES['soup']['tmp_name']); 
    

    をチェックするために、これを使用して... $ _FILES [ 'DFJK'] [ '型']でファイルのMIMEタイプではなくチェックしますユーザーが変更することができます。

  5. も非常に大きなサイズをアップロードするので、ファイルサイズを確認してください。サーバーのサービス拒否モードに移行します。

  6. htaccessを使用すると、ディレクトリに対する実行可能なアクセス権を停止することもできます。

    RemoveHandler .php .phtml .php3 
    RemoveType .php .phtml .php3 
    

    php_flag engine off 
    
関連する問題