PHP의 MD5_File () 함수를 사용하는 경우 개발자는 일반적으로 경로 선택의 영향을 무시합니다. 실제로, 상대적 및 절대 경로를 사용하면 특히 캐싱, 크로스 플랫폼 배포 및 보안과 관련하여 일부 시나리오에서 미묘한 차이를 만들 수 있습니다.
md5_file ()은 파일 내용의 MD5 해시를 계산하는 데 PHP에서 사용되는 함수입니다. 기본 사용량은 다음과 같습니다.
<code> $ hash = md5_file ( 'example.txt'); </코드>이 함수는 파일 경로를 매개 변수로 가져 와서 파일 내용에 대해 MD5 해시 문자열을 반환합니다.
상대 경로는 현재 스크립트 실행 디렉토리와 관련이 있습니다. 예를 들어:
<code> $ hash = md5_file ( 'uploads/image.jpg'); </코드>현재 작업 디렉토리는 명령 줄을 실행하거나 다른 입력 스크립트 ( index.php , admin.php )를 통해 동일한 코드에 액세스 할 때 변경 될 수 있습니다. 이 경우 상대 경로는 실패 또는 잘못된 파일을 가리키기 쉽습니다.
예를 들어:
<code> $ hash = md5_file (__ dir__. '/../uploads/image.jpg'); </코드>이것은 여전히 "상대적"경로 인 것처럼 보이지만 __dir__ 를 추가하면 현재 파일의 위치를 기반으로하기 때문에 실제로 더 안정적이됩니다.
절대 경로를 사용하면 파일 경로가 항상 정확합니다. 예를 들어:
<code> $ hash = md5_file ( '/var/www/m66.net/uploads/image.jpg'); </코드>큐 사용, 스케줄링 작업 또는 컨테이너에서 PHP 스크립트 실행과 같은 복잡한 시스템 아키텍처에서는 현재 작업 디렉토리를 통제 할 수 없을 수 있습니다. 절대 경로를 사용하면 경로 오류를 최소화 할 수 있습니다.
때때로 우리가 프론트 엔드에서 보내는 것은 다음과 같은 URL입니다.
<code> $ url = 'https://m66.net/uploads/image.jpg'; $ path = parse_url ($ url, php_url_path); $ hash = md5_file ($ _ server [ 'document_root']. $ path); </코드>이 경우 Parse_url () 을 통해 URL의 경로 부분을 꺼내고 $ _server [ 'Document_Root'] 와 함께 절대 경로를 구성하는 비교적 안전한 방법입니다.
상대 경로를 사용할 때, 공격자는 경로를 구성하여 시스템이 민감한 파일에 액세스하도록 유도 할 수 있습니다. 특히 경로가 엄격하게 접합되지 않을 때는 취약점을 유발할 가능성이 높습니다. 절대 경로는 일반적으로 서버가 사전 설정된 파일 시스템 구조로 제한되며, 이는 덜 위험합니다.
일부 웹 서버 또는 프레임 워크 (예 : Laravel)는 파일 경로를 사용하여 파일 경로를 사용하여 파일 위치를보다 명확하게 지적하여 캐시 오류의 오버 헤드와 반복 된 해시 계산을 줄일 수 있습니다.
md5_file () 자체는 경로 형식과 관련이 없지만 경로 안정성, 예측 가능성 및 보안과 같은 요소를 고려해야합니다. 생산 환경에서 절대 경로를 균일하게 사용하거나 호환성과 보안을 보장하기 위해 __DIR__를 기반으로 "의사-아소 러스 경로"를 구성하는 것이 좋습니다.
사용자 업로드와 관련된 시나리오에서 CDN은 소스로 돌아 가거나 파일 무결성 확인 URL 분석과 절대 경로를 결합하여 시스템의 견고성을 효과적으로 향상시킬 수 있습니다.
<code> $ url = 'https://m66.net/assets/media/file.zip'; $ RealPath = $ _Server [ 'Document_Root']. parse_url ($ url, php_url_path); $ hash = md5_file ($ realPath); </코드>주의를 기울이는 경로를 처리하면 일반적인 오류를 피할뿐만 아니라 PHP 프로그램이보다 강력하고 안전하게 만듭니다.