현재 위치: > 최신 기사 목록> crypt ()로 구성 파일 무결성 확인

crypt ()로 구성 파일 무결성 확인

M66 2025-05-28

개발 프로세스 중에는 특히 데이터베이스 암호, API 키 등과 같은 민감한 정보와 관련하여 구성 파일의 무결성 및 보안을 보장하는 것이 매우 중요합니다. PHP는 비밀번호 암호화에 주로 사용되는 내장 기능 Crypt () 를 제공하지만 파일 내용의 무결성을 확인하는 데 도움이 될 수 있습니다. 이 기사는 PHP의 Crypt () 함수를 사용 하여이 기능을 구현하고 실제 코드 예제를 결합하여 특정 작업을 보여주는 방법을 자세히 소개합니다.

crypt () 함수는 무엇입니까?

Crypt () 는 문자열을 암호화하는 데 PHP에서 사용되는 기능이며 종종 암호 해싱에 사용됩니다. 다양한 암호화 알고리즘 (예 : DES, Blowfish, SHA-256, SHA-512 등)을 지원하고 소금 값을 지정하여 보안을 늘릴 수 있습니다. 파일 무결성 검증을 위해 특별히 설계되지는 않았지만 비가역성 및 소금 값 메커니즘을 사용하여이를 사용하여 구성 파일의 해시 값을 생성하고 후속 검증 중에 비교할 수 있습니다.

Crypt ()를 사용하여 구성 파일 무결성을 확인하는 이유는 무엇입니까?

  • 돌이킬 수 없음 : crypt () 에 의해 생성 된 해시는 돌이킬 수 없으므로 파일 컨텐츠의 보안을 보장합니다.

  • 소금 가치 메커니즘 : 간단한 해싱의 충돌 문제를 피하기 위해 해싱의 고유성과 보안 강도를 증가시킵니다.

  • 내장 지원 : PHP는 내장되어 있으며 추가 확장이 필요하지 않으며 배포하기 쉽습니다.

구성 파일의 무결성을 확인하는 아이디어

  1. 구성 파일의 내용을 읽으십시오.

  2. 컨텐츠의 해시 값을 생성하고 ( Crypt ()를 사용하고 소금 값을 저장).

  3. 해시 값을 보안 위치 (데이터베이스 또는 별도 파일)로 저장하십시오.

  4. 나중에 확인할 때 구성 파일 컨텐츠를 다시 읽고 해시 값을 생성 한 다음 저장된 해시 값과 비교하십시오.

  5. 해시 값이 일관된 경우 구성 파일이 변조되지 않았 음을 의미합니다. 그렇지 않으면 파일이 수정 될 수 있음을 나타냅니다.

샘플 코드

 <?php
// 구성 파일 경로
$configFile = 'config.ini';

// 구성 파일 내용을 읽으십시오
$configContent = file_get_contents($configFile);
if ($configContent === false) {
    die("구성 파일을 읽을 수 없습니다。");
}

// 소금 값을 생성하십시오(예를 들어 Blowfish 연산,소금의 길이는입니다22)
$salt = '$2y$12$' . substr(str_replace('+', '.', base64_encode(random_bytes(16))), 0, 22);

// 해시 값을 생성합니다
$hash = crypt($configContent, $salt);

// 해시 값을 보안 파일로 저장하십시오
file_put_contents('config_hash.txt', $hash);

echo "구성 파일 해시가 생성되고 저장되었습니다。\n";

// -------------- 확인 단계 --------------

// 重新구성 파일 내용을 읽으십시오
$newContent = file_get_contents($configFile);
if ($newContent === false) {
    die("구성 파일을 읽을 수 없습니다。");
}

// 저장된 해시를 읽으십시오
$savedHash = file_get_contents('config_hash.txt');
if ($savedHash === false) {
    die("无法저장된 해시를 읽으십시오值。");
}

// 저장된 해시를 소금 값으로 사용하여 새로운 컨텐츠를 암호화하십시오
$newHash = crypt($newContent, $savedHash);

// 해시 값을 두 번 비교하십시오
if (hash_equals($savedHash, $newHash)) {
    echo "구성 파일 무결성 확인이 통과되었습니다,변조하지 않습니다。\n";
} else {
    echo "구성 파일 무결성 확인에 실패했습니다,파일 내용이 수정되었을 수 있습니다!\n";
}
?>

설명

  • 이것은 crypt () 함수의 특성을 활용합니다. 두 번째 매개 변수가 기존 해시 인 경우 crypt ()는 동일한 소금 값을 사용하여 새 해시를 생성합니다.

  • Hash_equals ()는 타이밍 공격을 방지하고 해시 문자열을 안전하게 비교하는 데 사용됩니다.

  • 해시 값을 데이터베이스 또는 기타 보안 저장 매체에 저장하여 쉽게 수정되지 않도록 할 수 있습니다.

  • crypt ()는 여러 알고리즘을 지원합니다. 위의 예는 Blowfish ( $ 2y $ ) 알고리즘을 사용합니다. 필요에 따라 다른 알고리즘을 선택할 수도 있지만 소금 값 형식은 해당해야합니다.

확장 제안

  • 구성 파일의 권한 설정과 결합하여 보안을 향상시킵니다.

  • 특히 자동 배포 후 구성 파일을 정기적으로 확인하십시오.

  • 로그 시스템과 결합하여 각 검증 결과를 기록하십시오.