현재 위치: > 최신 기사 목록> PHP Ziparchive 사용자 안내서 : 안전하고 안정적인 파일 포장 관행

PHP Ziparchive 사용자 안내서 : 안전하고 안정적인 파일 포장 관행

M66 2025-09-16

PHP Ziparchive 확장 소개

PHP Ziparchive Extension은 개발자에게 PHP에서 Zip 파일을 작동 할 수있는 기능을 제공합니다. 프로젝트가 안전하고 신뢰할 수 있도록 예상치 못한 오류 또는 잠재적 보안 위험을 피하기 위해 일부 모범 사례를 따라야합니다.

아카이브 무결성 점검을 활성화하십시오

Ziparchive는 기본적으로 Zip 파일의 무결성을 확인하지 않으므로 악성 파일이 추출되거나 기존 파일을 덮어 쓸 수 있습니다. 안전 모드는 다음과 같은 방식으로 활성화 할 수 있습니다.

 <span class="fun">$ Zip-> Open ( "Archive.zip", Ziparchive :: Create | Ziparchive :: Overwrite | Ziparchive :: Checkcons);</span>

파일 및 디렉토리 액세스를 제한합니다

기본적으로 Ziparchive는 모든 파일 또는 디렉토리에 액세스 할 수 있습니다. 보안이 강화 되려면 포장 할 파일 및 디렉토리를 지정할 수 있습니다.

 $zip->setArchiveComment("안전한 아카이브");
$zip->addFromPath("files/important.txt");

아카이브 무결성을 확인하십시오

추출하기 전에 손상된 파일 추출을 피하기 위해 아카이브 무결성을 확인하십시오.

 if ($zip->statusSys === ZIPARCHIVE::ER_OK) {
    // 전체적으로 보관되었습니다,추출 할 수 있습니다
} else {
    // 아카이브가 손상되었습니다,철수를 거부하십시오
}

비밀번호 보호를 사용하십시오

비밀번호 보호는 민감한 데이터를 포함하는 아카이브에 사용해야합니다.

 <span class="fun">$ zip-> setpassword ( "I &#39;m Safe");</span>

파일 크기 제한

악의적 인 업로드 또는 대형 파일을 방지하기 위해 단일 파일 또는 전체 아카이브의 최대 파일 크기를 설정하십시오.

 <span class="fun">$ zip-> setMaxSize (1024000); // 1MB로 제한합니다</span>

기호 링크를 처리합니다

기본적으로 Ziparchive는 상징적 링크를 따르지 않습니다. 다음 방법을 사용할 수 있습니다.

 <span class="fun">$ zip-> setexternalattributesName ( "Sym.Link", ZipAncive :: opsys_unix, Ziparchive :: opsys_unix_symlink);</span>

임시 디렉토리를 사용하십시오

아카이브를 생성하거나 추출 할 때는 서버에서 불필요한 파일을 생성하지 않기 위해 임시 디렉토리를 사용하는 것이 좋습니다.

 <span class="fun">$ zip-> settempdir (sys_get_temp_dir ());</span>

리소스를 자유롭게합니다

작업을 완료 한 후에는 Ziparchive 객체 및 관련 리소스를 Close () 방법을 사용하여 자원 누출을 방지해야합니다.

 <span class="fun">$ zip-> close ();</span>

오류 처리

ziparchive를 사용하는 과정에서 오류가 발생할 수 있습니다. getStatusString () 을 통해 오류 정보를 얻고 처리 할 수 ​​있습니다.

 if ($zip->getStatusString() === ZIPARCHIVE::ER_INCONS) {
    // 아카이브는 일관성이 없습니다,작업을 거부하십시오
}

테스트 및 녹음

프로덕션 환경에서 ZipAchive를 사용하기 전에 코드를 완전히 테스트하고 보안, 신뢰성 및 성능을 확인하고 팀이 이해할 수 있도록 구현을 자세히 기록해야합니다.

예 : 안전하고 신뢰할 수있는 포장

다음 예제는 모범 사례를 통해 ziparchive를 사용하여 파일을 패키지하는 방법을 보여줍니다.

 <?PHP
$zip = new ZipArchive();
$zip->open("archive.zip", ZipArchive::CREATE | ZipArchive::OVERWRITE | ZipArchive::CHECKCONS);
$zip->setArchiveComment("안전한 아카이브");
$zip->addFromPath("files/important.txt");
$zip->setExternalAttributesName("sym.link", ZipArchive::OPSYS_UNIX, ZipArchive::OPSYS_UNIX_SYMLINK);
$zip->setMaxSize(1024000);
$zip->setTempDir(sys_get_temp_dir());
$zip->close();
?>

요약

이러한 모범 사례에 따라 개발자는 PHP Ziparchive를 사용하여 안전하고 안정적인 패키징 및 데이터 추출을 확장하여 보안 취약점, 데이터 손실 및 성능 문제를 효과적으로 방지 할 수 있습니다.