ホームページ > バックエンド開発 > PHPチュートリアル > 安全な画像アップロード スクリプトを作成するには?

安全な画像アップロード スクリプトを作成するには?

Linda Hamilton
リリース: 2024-12-05 12:03:10
オリジナル
792 人が閲覧しました

How to Build a Secure Image Upload Script?

完全に安全な画像アップロード スクリプト

質問で説明されている広範な対策にもかかわらず、包括的な画像アップロード セキュリティ スクリプトは次の追加の側面に対処する必要があります。 :

クライアント側検証:

  • サポートされていないファイル タイプを除外するには、HTML5 input type="file" 属性を使用します。

ファイルの名前変更:

  • ファイル名を変更しないように、アップロードされたファイルの名前を一意でランダムな名前に変更します
  • ファイル名から機密情報 (拡張子など) を削除します。

ファイル拡張子の検証:

  • 作成許可されたファイル拡張子のホワイトリストと、アップロードされたファイルの拡張子を検証します。
  • 二重のファイル拡張子を確認します (例: "image.jpg.exe")。

画像分析:

  • 画像分析技術を使用して、アップロードされたファイルが有効な画像であり、画像を装った悪意のあるファイルではないかどうかを特定します。画像。

ファイル ストレージ:

  • アップロードされた画像を Web サイトのルート ディレクトリ以外の安全な場所に保存します。
  • 使用許可されたユーザーへのアクセスを制限するアクセス制御リスト (ACL) をサポートするファイル システム

データベース統合:

  • 元の名前、新しい名前、MIME タイプ、およびアップロードされた画像を追跡するためのデータベース テーブルを作成します。アップロード日。
  • データベースを使用して画像を取得し、承認されたユーザーに表示します。

スクリプト例:

上記のセキュリティ対策を組み込んだ改訂された PHP スクリプトを次に示します:

<?php

if (!empty($_FILES['image'])) {
  // Validate file extension
  if (!in_array($_FILES['image']['type'], ['image/jpeg', 'image/png', 'image/gif'])) {
    echo 'Invalid file type';
    exit;
  }

  // Validate file size
  if ($_FILES['image']['size'] > 1 * 1024 * 1024) { // 1MB
    echo 'File too large';
    exit;
  }

  // Generate random filename
  $filename = uniqid() . '.' . pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);

  // Rename and move file
  if (move_uploaded_file($_FILES['image']['tmp_name'], 'uploads/' . $filename)) {
    // Insert into database
    $sql = "INSERT INTO images (name, original_name, mime_type, upload_date) VALUES (:name, :original_name, :mime_type, :upload_date)";
    $stmt = $conn->prepare($sql);
    $stmt->execute([
      ':name' => $filename,
      ':original_name' => $_FILES['image']['name'],
      ':mime_type' => $_FILES['image']['type'],
      ':upload_date' => date('Y-m-d H:i:s')
    ]);

    echo 'Image uploaded successfully';
  } else {
    echo 'Error uploading image';
  }
}
?>
ログイン後にコピー

このスクリプトファイル拡張子、サイズ、MIME タイプを検証し、ファイルの名前を変更して安全に保存し、レコードを

追加の推奨事項:

  • Web アプリケーション ファイアウォール (WAF) を使用して、悪意のあるリクエストと攻撃をブロックします。
  • アップロードを監視する不審なアクティビティのディレクトリ。
  • PHP バージョンとセキュリティ ライブラリを定期的に更新して、問題に対処します。脆弱性。

以上が安全な画像アップロード スクリプトを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート