로그 파일을 처리 할 때, 우리는 종종 사용자의 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] 으로 바꾸려고합니다.
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 시리즈 기능을 사용하는 것이 좋습니다. 그러나 간단한 스크립트에서는 여전히 편리하고 실용적입니다.