<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,예를 들어 표시합니다</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"이 기사를 읽을 수 있습니다!"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-comment"># 사용 방법 md5_file 기능이 있습니다 PHP 파일 업로드의 합법성을 확인하십시오?</span></span><span>
웹 사이트 개발에서,파일 업로드 기능은 매우 일반적인 요구 사항입니다。하지만,안전을 보장합니다,개발자는 업로드 된 파일을 확인해야합니다,악의적 인 파일 업로드의 위험을 방지합니다。PHP 다양한 파일 확인 방법을 제공합니다,~에 `md5_file` 기능은 간단하고 효율적입니다,파일 무결성과 합법성을 확인하는 데 일반적으로 사용됩니다。
</span><span><span class="hljs-comment">## 무엇인가요 md5_file 기능?</span></span><span>
`md5_file` 예 PHP 内置的기능,지정된 파일을 계산하는 데 사용됩니다 MD5 해시 가치。MD5 예一种广泛使用的哈希算法,모든 길이의 데이터를 고정 길이 문자열로 매핑 할 수 있습니다.(</span><span><span class="hljs-number">32</span></span><span>16 진 문자),일반적으로 파일 무결성을 확인하는 데 사용됩니다。
기능原型如下:
```php
</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">md5_file</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$binary</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>)
</span></span>$ filename : 계산 해야하는 파일 경로
$ binary (선택 사항) : 결과를 바이너리 양식으로 반환할지 여부, 기본 16 진 문자열이 반환됩니다.
파일이 업로드되면 공격자는 악성 코드를 업로드하거나 파일을 변조 할 수 있습니다. 업로드 된 파일의 MD5 값을 계산하면 다음을 수행 할 수 있습니다.
전송 중 파일이 변조되었거나 손상되었는지 확인하십시오.
업로드 된 파일의 MD5 값을 업로드 된 파일의 MD5와 비교하여 파일이 합법적인지 여부를 결정합니다.
동일한 파일의 반복 업로드 방지 (캐시 또는 중복 제거에 사용할 수 있음)
사용자가 파일을 업로드 한 후 PHP는 파일을 임시 디렉토리에 저장합니다.
MD5_FILE을 사용 하여이 임시 파일의 MD5 값을 계산하십시오.
계산 된 MD5를 사전 정의 된 법적 파일 해시 값 목록과 비교하십시오.
일치하는 경우 파일은 합법적입니다. 그렇지 않으면 업로드가 거부됩니다.
 <span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 사전 정의 된 법적 파일을 가정하십시오MD5가치 배열</span></span><span>
</span><span><span class="hljs-variable">$allowed_md5_list</span></span><span> = [
    </span><span><span class="hljs-string">'d41d8cd98f00b204e9800998ecf8427e'</span></span><span>, </span><span><span class="hljs-comment">// 빈 파일의 예</span></span><span>
    </span><span><span class="hljs-string">'5d41402abc4b2a76b9719d911017c592'</span></span><span>, </span><span><span class="hljs-comment">// 예MD5</span></span><span>
];
</span><span><span class="hljs-comment">// 检查文件예否上传成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'upload'</span></span><span>]) && </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'upload'</span></span><span>][</span><span><span class="hljs-string">'error'</span></span><span>] === UPLOAD_ERR_OK) {
    </span><span><span class="hljs-variable">$tmp_file</span></span><span> = </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'upload'</span></span><span>][</span><span><span class="hljs-string">'tmp_name'</span></span><span>];
    
    </span><span><span class="hljs-comment">// 업로드 된 파일을 계산합니다MD5값</span></span><span>
    </span><span><span class="hljs-variable">$file_md5</span></span><span> = </span><span><span class="hljs-title function_ invoke__">md5_file</span></span><span>(</span><span><span class="hljs-variable">$tmp_file</span></span><span>);
    
    </span><span><span class="hljs-comment">// 심판MD5예否在合法列表中</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$file_md5</span></span><span>, </span><span><span class="hljs-variable">$allowed_md5_list</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일 업로드 합법,MD5검증이 통과되었습니다。"</span></span><span>;
        </span><span><span class="hljs-comment">// 여기에서 파일 저장과 같은 후속 작업을 수행 할 수 있습니다.</span></span><span>
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일 업로드는 불법입니다,MD5확인이 실패했습니다。"</span></span><span>;
        </span><span><span class="hljs-comment">// 여기에서 파일을 삭제하거나 오류를 반환 할 수 있습니다.</span></span><span>
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"업로드 파일 또는 업로드 오류가 감지되지 않았습니다。"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>MD5는 충돌 위험이있는 것으로 입증되었으며 암호와 같은 보안 요구가 높은 시나리오에는 적합하지 않습니다. 그러나 특히 알려진 파일을 비교할 때 파일 무결성 확인에 여전히 유효합니다.
보안을 향상시키기 위해 파일 유형 감지 (예 : MIME 유형), 파일 확장 검증, 파일 크기 제한 등과 같은 여러 검증 조치를 결합하는 것이 좋습니다.
보안 요구 사항이 더 높으면 SHA-256 ( Hash_File ( 'SHA256', $ Filename) )과 같은보다 안전한 해싱 알고리즘을 사용하는 것을 고려하십시오.
MD5_File 함수는 PHP 파일 업로드를 안전하게 검증하기위한 간단하고 효과적인 수단을 제공합니다. 업로드 된 파일의 MD5 값을 계산하고이를 법적 파일 해시 값과 비교하면 불법 파일을 효과적으로 방지하고 웹 사이트 보안을 보장 할 수 있습니다. 다른 보안 조치를 합리적으로 결합하면 파일 업로드 모듈의 보안이 크게 향상됩니다.
<hr> <? php // 기사가 끝나고 관련이없는 PHP 코드 예제 Echo "읽어 주셔서 감사합니다!"; ?> <span></span>