보안 이미지 업로드 스크립트
소개
악성 활동을 방지하려면 이미지 업로드 보안이 중요합니다. 귀하의 웹사이트의 무결성을 보장합니다. 이 문서에서는 다양한 잠재적 취약성을 해결하는 보안 이미지 업로드 스크립트를 구현하기 위한 포괄적인 솔루션을 제공합니다.
주요 요구 사항
보안 이미지 업로드 스크립트를 구축하려면 다음과 같은 몇 가지 주요 요구 사항이 필요합니다.
구현
PHP 코드(upload.php):
<br><?php</p><p>만약 (isset($_POST['제출'])) {</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// File type whitelist $allowed_types = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif']; // Sanitize input $file_name = $_FILES['image']['name']; $file_type = $_FILES['image']['type']; $file_size = $_FILES['image']['size']; // Validate file type if (!in_array($file_type, $allowed_types)) { echo "Invalid file type. Please upload an image."; exit; } // Validate file size if ($file_size > 1000000) { echo "File too large. Maximum size allowed is 1MB."; exit; } // Verify image using GD library $image_info = getimagesize($_FILES['image']['tmp_name']); if (!$image_info) { echo "Invalid image. Please upload a valid image."; exit; } // Generate random file name and extension $new_file_name = str_replace(".", "", microtime()) . "." . pathinfo($file_name, PATHINFO_EXTENSION); // Isolated upload path outside document root $upload_directory = 'uploads/'; // Save image to secure directory if (!move_uploaded_file($_FILES['image']['tmp_name'], $upload_directory . $new_file_name)) { echo "Image upload failed. Please try again."; exit; } echo "Image uploaded successfully.";</p> <p>}<br>?></p> <p><form action="upload.php" method="post" enctype="multipart/form-data"></p> <pre class="brush:php;toolbar:false"><input type="file" name="image">
<code> <?php // Sanitize input $id = (int)($_GET['id'] ?? 0); // Connect to database $host = 'localhost'; $user = 'username'; $pass = 'password'; $db = 'database'; $db = new mysqli($host, $user, $pass, $db); if ($db->connect_error) { echo "Database connection error: " . $db->connect_error; exit; } // Retrieve image details from database $sql = "SELECT * FROM uploads WHERE id = ?"; $stmt = $db->prepare($sql); $stmt->bind_param('i', $id); $stmt->execute(); $result = $stmt->get_result()->fetch_assoc(); if (!$result) { echo "Invalid image ID."; exit; } header('Content-Type: ' . $result['mime_type']); header('Content-Length: ' . filesize('uploads/' . $result['path'])); readfile('uploads/' . $result['path']); $db->close();
데이터베이스 설정
"uploads"라는 테이블이 있는 데이터베이스를 생성합니다. 다음 열:
업로드 후 작업
이미지가 안전하게 업로드되면 다음과 같은 추가 작업을 고려해야 할 수 있습니다.
결론
이 문서에 설명된 단계를 구현하면 이미지 업로드 시스템의 보안을 크게 강화하고 잠재적인 위험으로부터 웹사이트를 보호할 수 있습니다. 취약점. 제공된 코드와 권장 사항은 안전한 이미지 업로드 구현을 위한 견고한 기반이 되어야 합니다.
위 내용은 취약점을 방지하기 위해 이미지 업로드 스크립트를 안전하게 구현하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!