현재 위치: > 최신 기사 목록> 로그 파일의 민감한 정보 교체 (예 : IP 주소, 토큰)

로그 파일의 민감한 정보 교체 (예 : IP 주소, 토큰)

M66 2025-06-02

로그 파일을 처리 할 때, 우리는 종종 사용자의 IP 주소, 인증 토큰 등과 같이 민감한 정보가 탈감작 해야하는 상황을 종종 발생합니다.이 정보는 처리없이 직접 저장되거나 출력되므로 개인 정보 및 보안 문제가 발생할 수 있습니다.

PHP는 다양한 문자열 처리 기능을 제공하며 MB_EREGI_REPLACE 는 정규 표현식 교체를 지원하고 유니 코드 문자 세트를 지원하는 다중 바이트 안전 기능으로 중국어와 같은 다중 바이트 문자를 포함하는 컨텐츠 처리에 특히 적합합니다.

이 기사에서는 MB_EREGI_REPLACE를 사용하여 로그 콘텐츠에서 IP 주소 및 토큰 문자열을 찾고 교체하는 방법을 설명합니다.

샘플 로그 내용

다음과 같은 로그 스 니펫이 있다고 가정합니다.

 [2025-05-27 10:00:00] User login from 192.168.1.100 with token abc123xyz
[2025-05-27 10:05:00] Failed login from 10.0.0.5 with token 9f8d7e6c5b

우리는 IP 주소와 토큰을 [redacted_ip][redacted_token] 으로 바꾸려고합니다.

교체하려면 mb_eregi_replace를 사용하십시오

PHP의 mb_eregi_replace 기능은 다음과 같이 사용됩니다.

 string mb_eregi_replace ( string $pattern , string $replace , string $string [, string $option = "msr" ] )

다음은 로그 컨텐츠 처리를위한 전체 예제 스크립트입니다.

 <?php

// 읽기 로그 내용을 시뮬레이션하십시오
$log = <<<LOG
[2025-05-27 10:00:00] User login from 192.168.1.100 with token abc123xyz
[2025-05-27 10:05:00] Failed login from 10.0.0.5 with token 9f8d7e6c5b
LOG;

// 정규 경기 IPv4 주소
$pattern_ip = '\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b';

// 정규 경기 token(길이가 문자와 숫자로 구성된다고 가정하십시오 8 도착하다 32)
$pattern_token = '\b[a-zA-Z0-9]{8,32}\b';

// 바꾸다 IP 주소
$log = mb_eregi_replace($pattern_ip, '[REDACTED_IP]', $log);

// 바꾸다 token,타임 스탬프에서 우연히 숫자를 다치게하지 않도록주의하십시오.
$log = mb_eregi_replace('with token ' . $pattern_token, 'with token [REDACTED_TOKEN]', $log);

// 출력 결과
echo nl2br(htmlspecialchars($log));

?>

출력 결과

출력은 다음과 같습니다.

 [2025-05-27 10:00:00] User login from [REDACTED_IP] with token [REDACTED_TOKEN]
[2025-05-27 10:05:00] Failed login from [REDACTED_IP] with token [REDACTED_TOKEN]

실제 응용 프로그램 제안

실제 프로젝트에서는 일반적으로 원래 로그 파일에서 직접 작동하지 않지만 로그 판독 및 덤핑 프로세스를 통해 컨텐츠를 처리합니다. 예를 들어 위의 로직을 함수로 캡슐화 한 다음 로그 디스플레이 페이지에 사용할 수 있습니다.

 function sanitize_log($logContent) {
    $pattern_ip = '\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b';
    $pattern_token = '\b[a-zA-Z0-9]{8,32}\b';

    $logContent = mb_eregi_replace($pattern_ip, '[REDACTED_IP]', $logContent);
    $logContent = mb_eregi_replace('with token ' . $pattern_token, 'with token [REDACTED_TOKEN]', $logContent);

    return $logContent;
}

// 예제 전화
$rawLog = file_get_contents("https://m66.net/logs/example.log");
echo nl2br(htmlspecialchars(sanitize_log($rawLog)));

요약

MB_EREGI_REPLACE에 민감한 정보가 포함 된 로그 컨텐츠를 처리하는 간결하고 효율적인 방법을 제공합니다. 합리적인 정규 표현식 일치를 통해 IP 및 토큰과 같은 주요 데이터를 유연하게 교체하여 사용자 개인 정보를 보호하고 로그가 여전히 개발 및 운영 및 유지 보수에 유용 할 수 있습니다.

사용할 때주의를 기울이십시오.

  • 교체 모드가 다른 법률 데이터를 잘못 손상시키지 않도록하십시오.

  • MB_EREG_REPLACE 은 대소 문자를 사용하지 않습니다. 사례에 민감한 경우 MB_EREG_REPLACE를 사용할 수 있습니다.

  • PHP 8.0 후에는이 기능을 더 이상 권장하지 않을 수 있습니다. preg_replace 에서 PCRE 시리즈 기능을 사용하는 것이 좋습니다. 그러나 간단한 스크립트에서는 여전히 편리하고 실용적입니다.