近年、ネットワークテクノロジーの開発により、悪意のあるファイルのアップロードがインターネットセキュリティにとって大きな脅威になっています。悪意のあるファイルをアップロードすることにより、攻撃者はWebサイトのファイルのアップロード制限をバイパスすることができ、脆弱性の利用や悪意のあるコードインジェクションなどのセキュリティ問題につながります。 Webサイトのセキュリティを改善するには、PHPコードのアップロードされたファイルを効果的にフィルタリングおよび検証して、悪意のあるファイルのアップロードを効果的に防止する必要があります。
多くの場合、悪意のあるファイルは一般的なファイルタイプとして送信されるため、アップロードされたファイルのサフィックスをチェックすることは、悪意のあるアップロードを防ぐための最初のステップです。簡単な例コードは次のとおりです。
$ aladextensions = array( 'jpg'、 'jpeg'、 'png'、 'gif'); //アップロードされたファイルタイプをライセンス$ fileextension = strtolower(pathinfo($ _ files ['file'] ['name']、pathinfo_extension)); //ファイルの接尾辞を得るしますif(!in_array($ fileextension、$ aladextensions)){ die( '画像ファイルのアップロードのみがライセンスされています'); }
接尾辞チェックに加えて、ファイルのMIMEタイプを確認することも同様に重要です。これにより、悪意のあるファイルが正当なファイルに偽装されることができなくなります。 PHPのmime_content_type()関数を使用して、ファイルのmimeタイプを取得できます。以下は例のコードです。
$ AldocedMimeTypes = array( 'image/jpeg'、 'image/png'、 'image/gif'); //アップロードされたmimeタイプ$ uploadedfile = $ _files ['file'] ['tmp_name']; //アップロードされた一時ファイルパスを得る$ uploadmimimetype = mime_content_type($ uploadedfile); //アップロードされたmimeタイプを得るするif(!in_array($ uploadedmimeType、$ aversimmimeTypes)){ die( '画像ファイルのアップロードのみがライセンスされています'); }
ファイルの過度のアップロードがサーバーリソースや帯域幅を占めるのを防ぐために、アップロードされたファイルのサイズを制限する必要があります。 PHPは$ _files ['file']を介してファイルサイズを取得できます。以下は、ファイルサイズを制限する例コードです。
$ maxfilesize = 5 * 1024 * 1024; //アップロードをライセンスされている最大ファイルサイズ(5MB) $ uploadedFilesize = $ _files ['file'] ['size']; //アップロードされたファイルのサイズを得るする場合($ uploadedfilesize> $ maxfilesize){ die( 'ファイルサイズが制限を追い越しますえる'); }
異なるユーザーがアップロードしたファイル名の重複を避けるために、アップロードされたファイルの名前を変更できます。 phpのuniqid()関数を使用して一意のファイル名を生成し、ファイルサフィックスと組み合わせて新しいファイル名を形成します。関連する例コードは次のとおりです。
$ uploadedFileName = $ _files ['file'] ['name']; //アップロードされたファイルの元のファイル名前を得るします$ newFileName = uniqid()。 '。' 。 $ fileExtension; //新しいしいファイル名前を生成する$ uploadedfilepath = './uploads/'。 $ NEWFILENAME; //アップロードされたファイルを保存するためにパスを設定するif(move_uploaded_file($ _ files ['file'] ['tmp_name']、$ uploadedfilepath)){ echo 'ファイルアップロードに普通に'; } それ以外 { echo 'ファイルアップロードfailed'; }
要約すると、ファイル接尾辞チェック、MIMEタイプの確認、ファイルサイズの制限、ファイル名の予防を介して、悪意のあるファイルアップロードのリスクを効果的に防ぐことができます。さらに、サーバーソフトウェアを定期的に更新し、既知の脆弱性をパッチすることも、システムセキュリティを確保するための重要なステップです。これらの措置により、Webサイトのセキュリティを保証でき、データとユーザーのプライバシーを保護できます。