Skip to content

Instantly share code, notes, and snippets.

@kijin
Last active April 19, 2022 07:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kijin/68bf91d11ff1d10a8b2d4d5206dbfc21 to your computer and use it in GitHub Desktop.
Save kijin/68bf91d11ff1d10a8b2d4d5206dbfc21 to your computer and use it in GitHub Desktop.
Rhymix Manual Template

Rhymix\Framework\Security

Security 클래스는 보안과 관련된 유틸리티를 모아 놓은 클래스로, 인스턴스 생성이 필요하지 않습니다.

Security 클래스에서 제공하는 것과 유사한 암호화, 난수 생성 등의 작업을 할 때는 가능하면 직접 구현하여 쓰지 말고 라이믹스 프레임워크에서 제공하는 것을 사용할 것을 권장합니다.

getRandom()

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 매뉴얼 등
@kijin
Copy link
Author

kijin commented Apr 18, 2022

주요 상수

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의 값과 같습니다.

@kijin
Copy link
Author

kijin commented Apr 18, 2022

자바스크립트 전역 변수

default_url [string]

이 사이트의 메인 페이지 경로

current_url [string]

현재 보고 있는 페이지의 주소로, 짧은주소를 적용하지 않은 버전입니다.

짧은주소가 적용된 페이지 주소를 얻으려면 location.href를 사용하면 됩니다.

request_uri [string]

AJAX 요청을 위한 경로로, 대개 default_url과 같습니다.

current_lang [string]

현재 언어 (예: ko)

current_mid [string]

현재 페이지에 해당하는 mid 값 (예: board)

http_port [int|null]

HTTP 포트 설정

※ 내부적으로만 사용하며, 서드파티 자료에서 참조하는 것은 권장하지 않습니다.

https_port [int|null]

HTTPS 포트 설정

※ 내부적으로만 사용하며, 서드파티 자료에서 참조하는 것은 권장하지 않습니다.

enforce_ssl [bool]

SSL을 항상 사용하는 사이트인 경우 true, 그렇지 않은 경우 false

cookies_ssl [bool]

"보안 설정" 화면에서 SSL 쿠키를 사용하도록 설정된 경우 true, 그렇지 않은 경우 false

rewrite_level [int]

짧은주소 미사용시 0, XE 호환 형태만 사용시 1, 모든 형태 사용시 2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment