웹 개발에서 파일 업로드는 매우 일반적이지만 파일 무결성 및 보안을 확인합니다. 업로드 된 파일이 변조되거나 손상되지 않도록하기 위해 PHP는 MD5_File () 함수를 제공하여 파일의 MD5 해시 값을 계산하여 무결성 확인을 달성 할 수 있습니다.
이 기사에서는 MD5_File () 함수를 사용하여 업로드 된 파일의 서버 측 무결성을 확인하고 실제 PHP 코드 예제와 함께 응용 프로그램 메소드를 설명하는 방법을 자세히 소개합니다.
MD5_FILE ()은 지정된 파일의 MD5 해시 값을 계산하는 PHP의 내장 기능입니다. MD5는 모든 길이의 데이터를 고정 길이 32 비트 문자열로 맵핑하는 널리 사용되는 해싱 알고리즘입니다. 업로드 전후 파일의 MD5 값이 일관성이 있는지 여부를 비교하면 파일이 변경되었는지 여부를 결정할 수 있습니다.
기능 프로토 타입 :
string md5_file ( string $filename [, bool $raw_output = false ] )
$ filename : MD5 값에 대해 계산 해야하는 파일 경로.
$ raw_output : true 로 설정된 경우 MD5 다이제스트를 원래 바이너리 형식으로 반환하십시오. 기본적으로 False는 32 비트 16 진수 문자열을 반환합니다.
사용자는 양식을 통해 파일을 서버에 업로드합니다.
서버는 업로드 된 파일을 임시로 저장합니다.
서버는 md5_file ()을 호출하여 파일의 MD5 값을 계산합니다.
MD5 값을 클라이언트 또는 데이터베이스의 예상 MD5 값과 비교하십시오.
파일이 완료되었는지 확인하십시오.
다음은 완전한 파일 업로드 및 무결성 확인 예입니다.
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {
// 파일 업로드하는 임시 경로
$tmpFilePath = $_FILES['uploaded_file']['tmp_name'];
// 대상 저장 경로(요구 사항에 따라 수정할 수 있습니다)
$destination = __DIR__ . '/uploads/' . basename($_FILES['uploaded_file']['name']);
// 모바일 업로드 파일을 대상 디렉토리에
if (move_uploaded_file($tmpFilePath, $destination)) {
// 업로드 된 파일을 계산합니다MD5값
$md5Hash = md5_file($destination);
// 프론트 엔드 또는 데이터베이스가 파일을 미리 알고 있다고 가정하면MD5값(这里举例为固定값)
$expectedMd5 = 'd41d8cd98f00b204e9800998ecf8427e'; // 예MD5
// 파일 무결성을 확인하십시오
if ($md5Hash === $expectedMd5) {
echo "파일 업로드를 성공적으로 업로드하십시오,파일 무결성 확인이 전달됩니다!";
} else {
echo "파일 업로드를 성공적으로 업로드하십시오,그러나 파일 무결성 검증에 실패했습니다!";
}
} else {
echo "파일 저장이 실패했습니다!";
}
} else {
echo "파일 업로드 또는 업로드 오류가 없습니다!";
}
}
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">파일 업로드를 선택하십시오:</label>
<input type="file" name="uploaded_file" id="file" />
<button type="submit">업로드</button>
</form>
보안 : 파일을 업로드 할 때 악성 파일이 업로드되지 않도록 유형과 크기를 엄격하게 제어해야합니다.
MD5 충돌 : MD5 알고리즘에는 충돌 위험이 있습니다. 보안 요구 사항이 매우 높으면 SHA256_FILE () 과 같은 안전한 해시 기능을 사용하는 것을 고려하십시오.
파일 경로 권한 : 업로드 디렉토리에 쓰기 권한이 있고 누출을 방지하기 위해 URL을 통해 직접 액세스 할 수 없는지 확인하십시오.
클라이언트 MD5 값 : 클라이언트가 파일 MD5 값을 제공하는 경우 변조를 방지하기 위해 보안 채널을 통해 전송되어야합니다.
MD5_File () 함수를 사용하여 업로드 된 파일의 무결성을 확인하는 것은 파일이 잘못 변조되었는지 또는 업로드되었는지 여부를 신속하게 결정하는 간단하고 효과적인 방법입니다. 업로드 프로세스의 다른 보안 조치와 결합하여 파일 처리의 안정성과 보안을 향상시킬 수 있습니다.