Security 클래스는 보안과 관련된 유틸리티를 모아 놓은 클래스로, 인스턴스 생성이 필요하지 않습니다.
Security 클래스에서 제공하는 것과 유사한 암호화, 난수 생성 등의 작업을 할 때는 가능하면 직접 구현하여 쓰지 말고 라이믹스 프레임워크에서 제공하는 것을 사용할 것을 권장합니다.
public static function getRandom(int $length = 32, string $format = 'alnum'): string
※ 실제 소스나 주석에 타입 선언이 없더라도 유추하여 작성합니다. 입력값이나 반환값의 타입이 여러 가지인 경우 ?object
, array|false
, void
등 최신 PHP 문법이나 PHP 매뉴얼과 유사한 형식으로 표현합니다.
- 임시 비밀번호, 암호화 키 등 난수가 필요할 때 사용합니다.
- 문자열 형태의 난수를 생성하는 데 최적화되어 있으며, 정수가 필요할 경우
getRandomNumber()
메소드 사용을 권장합니다. - 사용자의 시스템에서 사용할 수 있는 가장 안전한 난수 생성기를 자동으로 감지하도록 되어 있습니다. PHP 7 이후 대부분의 서버에서는
random_bytes()
내장함수를 사용합니다.
$length
: 반환할 문자열의 길이$format
: 반환할 문자열의 형태binary
: 바이너리를 그대로 반환합니다. 화면에 표시할 수 없는 문자나 널바이트 등이 포함될 수 있으므로, 직접 출력하거나 저장하기보다는 암호화 초기화 벡터 등 다른 연산의 입력값으로 활용하는 데 적합합니다.hex
: 0-9, a-f 문자만을 사용하여 인코딩합니다. 일정량의 엔트로피를 담는 데 가장 많은 문자가 필요합니다.alnum
: 영문 대소문자와 숫자를 사용합니다. (기본값)printable
: 특수문자를 포함하여 화면에 표시할 수 있는 모든 아스키 문자를 사용합니다.
- 지정한 길이의 문자열을 반환합니다.
- 반환값은 매번 다르며, 예측 가능한 주기로 반복되지 않습니다.
- 이 메소드는 예외를 발생시키지 않습니다.
$secret_key = \Rhymix\Framework\Security::getRandom(24, 'printable');
- Password
- Security::getRandomNumber()
- Security::getRandomUUID()
- 관련 외부 링크, PHP 매뉴얼 등
주요 상수
RX_VERSION [string]
라이믹스 코어의 버전 (예:
2.0.20
)RX_MICROTIME [float]
현재 요청을 처리하기 시작한 시간 (마이크로초 단위)
RX_TIME [int]
현재 요청을 처리하기 시작한 시간 (초 단위)
RX_BASEDIR [string]
라이믹스 코어가 설치된 서버단 경로
마지막 슬래시를 포함하며, 윈도우인 경우 백슬래시→슬래시로 정규화합니다.
RX_BASEURL [string]
라이믹스 코어가 설치된 URL 경로
폴더 내에 설치된 경우
/rhymix/
와 같이 나타나고, 대개의 경우/
가 됩니다.RX_REQUEST_URL [string]
현재 요청 URL에서
RX_BASEURL
을 제외한 나머지 부분 (예:board/123
)RX_CLIENT_IP_VERSION [int]
현재 방문자의 IP 주소가 IPv4인 경우
4
, IPv6인 경우6
(정수)RX_CLIENT_IP [string]
현재 방문자의 IP 주소
클라우드플레어 사용시 실제 방문자 IP를 자동으로 파악합니다.
CLI에서 호출할 경우
$_SERVER['REMOTE_ADDR']
이 없으므로127.0.0.1
으로 고정됩니다.서버 설정 문제나 특수한 환경에서 IP 주소를 파악할 수 없는 경우
0.0.0.0
으로 나올 수도 있습니다.RX_SSL [bool]
현재 요청이 SSL(TLS)을 사용하는 경우
true
, 그렇지 않은 경우false
RX_POST [bool]
현재 요청이
POST
인 경우true
, 그렇지 않은 경우false
RX_WINDOWS [bool]
라이믹스가 윈도우 서버에 설치되어 있는 경우
true
, 그렇지 않은 경우false
XE 호환성을 위한 상수들
__XE__
,__ZBXE__
: 항상true
(미리 선언할 필요 없습니다.)__XE_VERSION__
,__ZBXE_VERSION__
: 항상RX_VERSION
의 값과 같습니다._XE_PATH_
: 항상RX_BASEDIR
의 값과 같습니다.