현재 위치: > 최신 기사 목록> php의 get_defined_constants 함수를 사용하여 일정한 화이트리스트를 동적으로 구성하는 방법 구성을 수행하는 방법은 무엇입니까?

php의 get_defined_constants 함수를 사용하여 일정한 화이트리스트를 동적으로 구성하는 방법 구성을 수행하는 방법은 무엇입니까?

M66 2025-05-17

PHP 개발에서는 일반적으로 상수를 사용하여 일부 전역 구성 매개 변수 또는 시스템 정보를 저장합니다. 일부 시나리오에서는 구성 파일 또는 외부 방법을 통해 어떤 상수가 유효한 상수를 동적으로 제어 할 수 있기를 희망합니다. 이를 달성하기 위해 PHP의 내장 get_defined_constants 함수를 사용하여 현재 정의 된 모든 상수를 얻을 수 있으며, 법적 상수 만 사용되도록 구성 검증을 수행하기 위해 일정한 화이트리스트를 동적으로 구성 할 수 있습니다.

1. get_defined_constants 함수는 무엇입니까?

get_defined_constants는 현재 스크립트에서 정의 된 모든 상수를 취하고 일정한 이름과 상수 값의 키 값 쌍을 배열로 반환하는 PHP의 내장 기능입니다. 이 기능의 프로토 타입은 다음과 같습니다.

 array get_defined_constants (bool $categorize = false)

매개 변수 범주는 카테고리별로 상수를 반환할지 여부를 결정합니다. 기본적으로 모든 상수가 포함 된 배열을 반환합니다. true 로 설정되면 상수는 카테고리 (예 : 시스템 상수, 확장 상수 등)별로 분류됩니다.

2. get_defined_constants를 사용하여 현재 정의 된 상수를 얻으십시오

일정한 화이트리스트 검증을 수행 할 때 먼저 현재 스크립트에서 정의 된 모든 상수를 가져와야합니다. get_defined_constants () 함수를 호출하면이 정보를 쉽게 가져오고 필터링하고 확인할 수 있습니다.

 $defined_constants = get_defined_constants(true);
print_r($defined_constants);

출력은 정의 된 모든 상수와 그 값을 표시합니다. 현재 우리는 시스템 정의 상수 및 사용자 정의 상수를 필터링 할 수 있습니다.

3. 일정한 화이트리스트를 구성하십시오

허용 상수 만 사용되도록하기 위해 "상수 화이트리스트"를 구축하여 상수의 사용을 제한 할 수 있습니다. 일정한 화이트리스트는 법적 상수 이름을 포함하는 배열입니다.

 $whitelist = ['MY_APP_DEBUG', 'MY_APP_ENV', 'MY_APP_VERSION'];

이 배열에는 우리가 허용하는 상수 이름이 포함되어 있습니다. 다음으로, 우리는 현재 정의 된 상수를 반복하여 화이트리스트에 있는지 확인할 수 있습니다.

4. 상수가 화이트리스트에 있는지 동적으로 확인하십시오.

동적 인 검증을 통해 화이트리스트의 허용 상수 만 프로그램에 사용되도록 할 수 있습니다. 특정 구현 방법은 다음과 같습니다.

 $defined_constants = get_defined_constants(true);
$whitelist = ['MY_APP_DEBUG', 'MY_APP_ENV', 'MY_APP_VERSION'];

foreach ($defined_constants['user'] as $constant => $value) {
    if (!in_array($constant, $whitelist)) {
        echo "경고하다: 끊임없는 '$constant' 화이트리스트에서 정의되지 않았습니다!\n";
    } else {
        echo "끊임없는 '$constant' 사용할 수 있습니다,가치는입니다: $value\n";
    }
}

이 코드에서는 먼저 현재 스크립트 ( get_defined_constants (true) )에서 모든 사용자 정의 상수를 얻은 다음 in_array 함수를 사용하여 각 상수가 화이트리스트에 있는지 여부를 결정합니다. 상수가 화이트리스트에 있지 않으면 경고 메시지를 출력합니다.

5. 실제 응용 시나리오

5.1 구성 파일의 지속적인 확인

응용 프로그램에 사용해야하는 많은 상수가 포함 된 구성 파일이 있다고 가정합니다. 생산 환경에서는 사전 정의 된 상수 만 사용할 수 있도록 보안 위험을 피할 수 있습니다.

예를 들어, 디버깅 정보, 환경 설정 등과 같은 일부 상수를 정의해야 할 수도 있습니다.

 define('MY_APP_DEBUG', true);
define('MY_APP_ENV', 'production');
define('MY_APP_VERSION', '1.0.0');

그런 다음 화이트리스트의 상수와 비교하여 이러한 상수가 합법적이며 오용 또는 부적절한 수정을 피하십시오.

5.2 동적 제어 상수를 활성화하고 비활성화합니다

일부 시나리오에서는 동적 구성을 통해 특정 상수를 활성화 또는 비활성화하는 것이 바람직 할 수 있습니다. 예를 들어, 일부 상수는 개발 모드에서만 활성화되고 생산 환경에서 비활성화 될 수 있습니다. 지속적인 화이트리스트 메커니즘을 통해 특정 환경에서 사용할 수있는 상수를 쉽게 제어 할 수 있습니다.

 if (MY_APP_ENV === 'development') {
    define('MY_APP_DEBUG', true);
} else {
    define('MY_APP_DEBUG', false);
}

현재 환경에 따라 상수 화이트리스트를 동적으로 구성하고 해당 구성 검증을 수행하여 적절한 환경에서만 적절한 상수 만 적용되도록 할 수 있습니다.

6. 요약

PHP의 get_defined_constants 함수를 통해 현재 스크립트에서 정의 된 모든 상수를 쉽게 얻을 수 있고 화이트리스트 메커니즘을 사용하여 동적 인 검증을 수행 할 수 있습니다. 일정한 화이트리스트는 사전 정의 된 상수 만 제한하여 응용 프로그램 보안을 개선하고 불필요한 구성 오류 또는 보안 위험을 피할 수 있습니다.

환경 구성, 동적 제어 및 기타 수단과 함께 프로그램의 안정성과 보안을 보장하기 위해 구성 검증을 위해 일정한 화이트리스트를 유연하게 적용 할 수 있습니다.