Blog

#2300 이슈에 더해 추가 개선을 적용합니다.

안녕하세요.

XE 1.11.0버전으로 예정된 중요 변경사항을 안내합니다.
(1.10 버전은 폐기되었으며, 1.10에서 예정되었던 변경사항은 포함되지 않습니다.)

XE 1.11.0은 보안 향상을 위해 사용자 입력 값(위지윅 에디터 및 각종 입력 폼)에 대해 HTML 태그를 제한하고, 악의적인 접근에 대한 제한을 적용했습니다.

개요

XE 1.11.0버전에서는 아래와 같은 사항이 적용됩니다.

  • 제외되었던 레이아웃 편집기 등에서 PHP 코드 사용 제한
    • PHP 코드가 포함되면 요청이 거부되며, 변경사항을 잃을 수 있습니다
    • 위지윅 에디터를 통한 글쓰기에는 제한되지 않습니다
  • URL 요청 시 parameter에 script 등의 태그 사용 제한
    • 일반적으로 영향이 없으나, 특정 플러그인에 따라 링크 또는 주소창에 보여지는 항목에 HTML 태그가 사용되면 제한됩니다
  • XE 1 배포본에 포함된 모듈, 레이아웃, 스킨에서 화면에 출력하는 사용자 입력 값 중에 HTML 태그가 포함되면 태그가 적용되지 않고 일반 문자열로 표시됩니다
    • 배포본에 포함된 항목에만 적용되며, 배포본에 포함된 파일을 수정하여 특정 값을 출력하는 경우 영향을 받을 수도 있습니다
    • 예) 메뉴 설명에 HTML을 입력하고, 배포본에 포함된 XEDITION 레이아웃에 메뉴 설명(HTML)을 출력하는 경우
    • 이 사항은 배포본에 포함된 파일을 대상으로하지만, 추후 업데이트에서 플러그인 제작자 또는 사이트 운영자가 선택적으로 이러한 보안 옵션을 사용할 수 있는 기능이 추가될 수 있습니다

템플릿 필터 사용법

@kijin님의 코드로부터 기인한 템플릿 필터 기능이 추가되었으며, 이 기능이 템플릿 보안 향상의 역할을 합니다.

출력 값에 대한 escape 필터를 적용할 수 있으며, 사용 방법은 아래와 같습니다.
escape 필터는 htmlspecialchars() 함수를 사용하는 간소화된 방법입니다.

escape 필터의 종류

  • escape : 출력되는 결과물에 htmlspecialchars()가 적용되며, double_encode 옵션은 true입니다
    • 일반적으로 사용되지 않을 수 있으며, textarea 필드에 출력될 값이 대상이 될 수 있습니다
  • autoescape : 출력되는 결과물에 htmlspecialchars()가 적용되며, double_encode 옵션은 false입니다
    • HTML이 적용되지 않아야 할 항목에 사용
  • noescape : 별도 처리하지 않고 그대로 출력합니다
    • HTML을 적용해야 할 항목에 사용

각 필터는 아래 <config>를 이용한 일괄 설정에 대한 필터를 개별 항목에 덮어 쓸 수 있습니다.

escape 적용

HTML 템플릿 파일 상단에 아래와 같이 명시하여, 해당 파일에서 출력하는 모든 값에 autoescape 필터를 적용할 수 있습니다.

<config autoescape="on" />

템플릿 전체에 적용하지 않고 일부 출력 값에 적용은 아래와 같습니다.

<div class="content">
  {$content|autoescape}
</div>

이 두 방법을 혼용하여, 필터를 덮어 쓰면 아래와 같이 동작합니다.

ex.png

 

아래와 같이 공백이 포함되지 않도록 주의해야 합니다(아래와 같은 사항은 무시되며, 오류가 발생할 수 있습니다).

  • {$content | noescape}
  • {$content| noescape}
  • {$content |noescape}

즉, pipe 문자(|) 앞 뒤에는 공백이 포함되지 않아야 합니다.


이 변경 사항은 최초 안내한 것처럼 '모든 템플릿 파일'을 대상으로 했던 것과 다르게, XE 1 배포본에 포함돈 파일을 대상으로 합니다.

태그 연관 글
  1. [2018/12/18] Blog [보안패치] XE 1.11.2 버전 배포 안내 by XE *1
  2. [2018/10/17] Blog XE 1.11.1 버전 배포 안내 by XE
  3. [2018/10/10] Blog [보안패치] XE 1.11.0 버전 배포 안내 by XE *3
  4. [2018/06/07] Blog XE Core 1.9.7 배포 안내 by XE
  5. [2018/03/07] Blog [보안 패치] XE 1.9.6 배포 안내 (1.9.5 포함) by XE *2
제목 최종 글 날짜
공지 XE Open Study Step1 후기 [1] 2019.02.26 by 똑디 2019.02.25
공지 [채용] XEHub와 함께 할 프론트앤드 개발자 모집   2019.01.24
공지 [중요-수정] XE 1.11.0 버전의 중요 변경사항 안내 (최종 수정: 2018년 10월 08일 19시 18분) [1] 2018.10.10 by gu곰 2018.09.19
공지 [중요!] Object 클래스의 이름 변경 안내(PHP 7.2 버전 호환성) [4] 2019.03.12 by 아긔아자 2017.11.27
공지 XE 신규 보안취약점 신고 포상제 시행 안내 [1] 2017.02.25 by 댑펑 2016.09.30
제로보드XE 오픈베타를 시작합니다. [92] 2014.01.02 by anonymous 2007.08.12
제로보드XE의 개발 방향 및 관련 정보 [9] 2012.08.16 by vibram five fingers 2007.08.13
현재 사이트가 느린 이유를 처리중입니다. [15] 2012.08.16 by vibram five fingers 2007.08.13
접속 속도 어떠신가요? [33] 2012.08.16 by vibram five fingers 2007.08.13
제로보드 공식사이트의 사이트 개편에 대한 간단한 안내입니다. [12] 2012.08.16 by vibram five fingers 2007.08.13
*.zetyx.net 도메인 포워딩에 대한 안내 [8] 2012.08.16 by vibram five fingers 2007.08.13
XE에 대한 오해 몇가지에 대해 말씀드립니다. ^^ [19] 2012.08.16 by vibram five fingers 2007.08.14
[종료] 계정 정보 공유 게시판 [32] 2012.08.16 by vibram five fingers 2007.08.14
[취소] 계정정보 게시판 운영에 대한 의견 정리합니다. [41] 2012.08.16 by vibram five fingers 2007.08.20
커뮤니티 채널 오픈하였습니다. [7] 2012.08.16 by vibram five fingers 2007.08.28
제로보드XE의 오픈프로젝트에 많은 관심 부탁드립니다. ^^ [7] 2012.08.16 by vibram five fingers 2007.08.28
*.zetyx.net 도메인 포워딩 기능 다시 오픈하였습니다. [9] 2012.08.16 by vibram five fingers 2007.09.12
현재 접속 속도 설문 부탁드립니다. [79] 2012.08.16 by vibram five fingers 2007.10.01
도메인 포워딩 주소가 추가되었습니다. [8] 2012.08.16 by vibram five fingers 2007.10.05
차후 제로보드XE 개발 진행 계획 [61] 2012.08.16 by vibram five fingers 2007.10.12
갑작스런 메일 발송에 사과 말씀드립니다. [13] 2012.08.16 by vibram five fingers 2007.10.15
zbxe Albatross 개발 진행중입니다. [74] 2012.08.16 by vibram five fingers 2007.10.19
제로보드4 원격실행 취약 버그 패치해주세요. [13] 2012.08.16 by vibram five fingers 2007.11.01
Albatross 코드를 완료하였습니다. [89] 2012.08.16 by vibram five fingers 2007.11.01
차후 진행 예정에 대한 공지입니다. [28] 2012.08.16 by vibram five fingers 2007.11.05