자주자주 공지를 확인하세요!

라이믹스/매뉴얼/확장 기능 보안 점검

상위 문서: 라이믹스/매뉴얼

적용 범위[편집 / 원본 편집]

라이믹스 모듈·애드온·위젯을 만들거나 도입할 때 확인할 보안 항목이다. 아래 절차는 OWASP의 일반 원칙과 라이믹스의 실제 변경 사항을 연결한 보충 안내이다. 사용하는 코어 버전의 API·라우터·권한 처리와 함께 검토한다.

인증과 권한을 구분하기[편집 / 원본 편집]

로그인했다는 사실은 해당 문서·게시판·회원 정보를 수정할 수 있다는 뜻이 아니다. 화면의 버튼을 숨겨도 사용자는 URL이나 요청 데이터를 직접 바꿀 수 있으므로 상태를 변경하는 서버 처리부에서 매번 권한을 확인한다. OWASP 권한 검사 원칙

예를 들어 글 삭제 기능은 요청의 document_srl을 믿고 삭제하지 않는다. 실제 문서 조회 → 소속 모듈 확인 → 현재 사용자와 해당 문서의 삭제 권한 확인 → 요청 검증 → 삭제 순서로 설계한다. member_srl이나 관리자 여부를 브라우저가 보낸 값으로 결정하지 않는다.

시험 계정·입력 기대 결과
비로그인 방문자 보호된 조회·변경 요청 거부
일반 회원 A가 회원 B의 자료 식별자를 요청 소유권·게시판 권한에 따라 거부
게시판 A 관리자에게 게시판 B의 식별자를 전달 관리 범위 밖 변경 거부
존재하지 않는 식별자, 음수·배열·과도한 값 오류를 일관되게 처리하고 내부 정보 노출 방지

라우터의 변수 형식 검사는 잘못된 입력을 줄이지만 소유권·업무 권한 검사를 대신하지 않는다. 라이믹스/라우터 참고.

CSRF와 상태 변경[편집 / 원본 편집]

삭제·권한 변경 같은 작업을 단순 GET 링크로 실행하지 않는다. 코어의 요청·CSRF 검증 흐름을 사용하고, 토큰을 누락·변조한 요청도 거부되는지 시험한다. POST로 전송한다는 사실만으로 CSRF가 방어되지는 않는다. 같은 출처 확인과 토큰 등 실제 검증이 필요하다. OWASP CSRF 예방

2.1.37에서도 로그아웃 CSRF 방어가 보완되었다. 예전 XE·라이믹스 코드의 동작을 현재 버전에서도 동일하다고 가정하지 않는다. 라이믹스/릴리즈 노트/2.1.37 참고.

입력 검증과 출력 처리[편집 / 원본 편집]

  • 입력 단계에서 자료형·길이·범위·허용 목록을 검증한다. SQL 값은 코어 쿼리 기능을 사용하고 문자열 연결로 SQL을 만들지 않는다. 라이믹스/매뉴얼/DB 쿼리 operator 참고.
  • 출력 위치가 HTML 본문인지, 속성인지, URL인지, JavaScript인지에 따라 필요한 인코딩이 다르다. 한 번 HTML 처리를 했다고 모든 출력 문맥에서 안전한 것은 아니다.
  • 허용 HTML을 받는 기능은 검증된 필터를 사용한다. 일반 텍스트는 적절히 이스케이프하고, 필터를 거친 HTML을 다시 삽입·변환하면서 위험한 문법을 되살리지 않는지 확인한다. OWASP XSS 예방

2.1.38 호환성 확인[편집 / 원본 편집]

Rhymix\Framework\Filters\HTMLFilter::clean()의 $allow_widgets 옵션은 2.1.38에서 제거됐다. 해당 옵션에 의존하는 자료는 호출부와 위젯 처리 방식을 다시 검토해야 한다. 최고관리자 이외의 게시판 관리자가 헤더·푸터 스크립트를 수정하지 못하도록 한 변경도 함께 적용됐다. 공식 2.1.38 공지

파일 업로드와 경로[편집 / 원본 편집]

확장자 하나만으로 파일을 신뢰하지 않는다. 허용 형식·크기·실제 내용과 파일명을 검증하고, 저장 위치에서 업로드 파일이 서버 코드로 실행되지 않도록 구성한다. 다운로드 기능에서도 파일 식별자와 접근 권한을 확인한다. OWASP 파일 업로드 안내

사용자가 제공한 경로를 그대로 include·파일 삭제·압축 해제 대상에 연결하지 않는다. 저장소의 기준 디렉터리 안에 최종 경로가 남는지 확인하고 ../, 절대 경로, 인코딩된 경로도 시험한다. 운영 환경의 실제 자료를 지우는 방식으로 검증하지 않는다.

외부 서비스·로그·캐시[편집 / 원본 편집]

  • 외부 URL을 받아 서버가 요청하는 기능은 접속 가능한 프로토콜·호스트와 리다이렉트 처리 범위를 정한다. 관리자만 쓰는 기능에도 적용한다.
  • API 키·DB 비밀번호·세션 토큰은 코드 저장소·URL·공개 로그에 넣지 않는다. 오류 응답에는 필요한 안내만 표시한다.
  • 사용자·언어·권한별 결과를 캐시할 때 서로 섞이지 않는지 시험한다. 라이믹스/매뉴얼/캐시와 성능 점검 참고.
  • 취약점이 의심되면 공격 절차나 비밀값을 공개 이슈에 올리기 전에 라이믹스/보안의 제보 경로를 확인한다.

배포 전 회귀 시험[편집 / 원본 편집]

일반 사용자·비로그인·범위가 다른 관리자 계정으로 정상 요청과 거부되어야 할 요청을 모두 시험한다. 권한 거부 후 DB·파일·메일 등 부수 효과가 발생하지 않았는지도 확인한다. 코어와 확장 기능 업데이트 뒤에는 같은 시험을 반복하고 결과를 기록한다.


라이믹스 · 설치·운영·개발 매뉴얼 둘러보기
설치·이전 설치 환경 · 설치 · 업데이트 · XE에서 이전 · 호환성 점검 · nginx · 도메인 변경
운영 백업·복원 · 업로드·서버 진단 · 캐시·성능 · Crontab · 보안 · 릴리즈 노트
개발 확장 기능 제작 · 애드온 · DB 연산자 · 라우터 · 이벤트 · 개발 보안
테마·API 테마 제작 · 템플릿 v1 · 템플릿 v2 · 프레임워크 · PHP 전역 함수 · JS 라이브러리 · JS 함수 · 레거시 JS 함수 · String 확장
기여·연동 이슈·PR · 코딩 규칙 · 라이선스 · IP 대역 · 시간대 · 포토스와이프 · 모바일 푸시 · 네모의 꿈 색상

최근 바뀜

더 보기