BOARD

자료·레퍼런스

그누보드 분류명 특수문자 입력 제한 원인과 보안 필터링 해제 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 19회 작성일 26-09-29 17:03

본문

그누보드 분류명 특수문자 입력 제한 원인과 보안 필터링 해제 방법

그누보드 5.1.12 버전 이후 보안 패치로 인해 분류명에 특수문자 입력이 제한되는 원인을 파악하고, 필요 시 필터링 정규식을 수정하여 괄호 등의 특수문자를 허용하는 방법을 확인합니다.

그누보드 분류명 특수문자 제한 이유

그누보드 5.1.12 버전 이후부터는 XSS(크로스 사이트 스크립팅) 관련 취약점에 대응하기 위한 보안 패치가 적용되면서 분류명 입력 시 특정 특수문자를 사용할 수 없도록 제한되어 있습니다.

사용이 제한된 특수문자 목록

  • <, >, ', ", \, %, =, (, ), /, ^, *

그누보드4나 그누보드5 초기 버전에는 이러한 제한이 없었으나, 5.1.12 이후 버전에서는 해당 문자들을 포함한 채로 분류명을 입력하면 분류 링크 처리 과정에서 문제가 발생할 수 있습니다.

분류명 특수문자 검증 파일 및 코드 위치

그누보드에서 분류명(카테고리) 및 링크 처리 시 특수문자 검증과 필터링이 이루어지는 대표적인 파일과 코드는 다음과 같습니다.

1. /common.php

  • 역할: 요청된 분류 파라미터(sca)의 XSS 취약점에 대응하여 특수문자를 검증하고 제거하는 로직이 포함되어 있습니다.
  • 관련 코드 예시:
    if (isset($_REQUEST['sca'])) {
    $sca = clean_xss_tags(trim($_REQUEST['sca']));
    if ($sca) {
    $sca = preg_replace("/[\<\>'\"'\\\"\%\=\(\)\/\^\*]/", "", $sca);
    $qstr.= '&amp;sca='. urlencode($sca);
    }
    } else {
    $sca = '';
    }

2. adm/boardformupdate.php

  • 역할: 관리자 페이지에서 게시판 분류 목록을 업데이트할 때 입력값 중 허용되지 않는 특수문자를 정규식(preg_replace)으로 필터링합니다.
  • 관련 필터링 정규식 패턴:/[\<\>'\"\\'\\\"\%\=\(\)\/\^\*]/(사용할 수 없는 특수문자 목록: <, >, ', ", \, %, =, (, ), /, ^, *)

분류명 괄호 특수문자 허용을 위한 정규식 수정 방법

그누보드 5.1.12 버전 이후의 XSS 보안 패치로 인해 분류명에 괄호 ( ) 등의 특수문자가 포함되면 필터링되어 링크 등에 문제가 발생할 수 있습니다. 괄호 등의 문자를 사용하려면 관련 파일의 정규식 필터링 코드에서 해당 문자를 제외하도록 수정해야 합니다.

1. adm/boardformupdate.php 파일 수정

관리자 설정 관련 처리 파일인 adm/board_form_update.php에서 아래 코드를 찾습니다.

$str_bo_category_list = preg_replace("/[\<\>'\"\\'\\\"\%\=\(\)\/\^\*]/", "", $bo_category_list);

괄호 ()를 허용하려면 정규식 패턴에서 괄호 부분을 제거하도록 아래와 같이 변경합니다.

//$str_bo_category_list = preg_replace("/[\<\>'\"\\'\\\"\%\=\(\)\/\^\*]/", "", $bo_category_list);
$str_bo_category_list = preg_replace("/[\<\>'\"\\'\\\"\%\=\/\^\*]/", "", $bo_category_list);

2. common.php 파일 수정

공통 처리 파일인 common.php에서도 파라미터 sca에 대한 필터링 정규식을 수정해야 합니다. 아래 코드를 찾습니다.

if ($sca) {
 $sca = preg_replace("/[\<\>'\"\\'\\\"\%\=\(\)\/\^\*]/", "", $sca);
 $qstr.= '&amp;sca='. urlencode($sca);
}

아래와 같이 괄호 () 패턴을 제외하도록 변경합니다.

if ($sca) {
 //$sca = preg_replace("/[\<\>'\"\\'\\\"\%\=\(\)\/\^\*]/", "", $sca);
 $sca = preg_replace("/[\<\>'\"\\'\\\"\%\=\/\^\*]/", "", $sca); // 괄호 ( ) 사용하기 위해서 변경
 $qstr.= '&amp;sca='. urlencode($sca);
}

3. 적용 후 확인

수정 완료 후 게시판 분류명에 괄호가 포함된 이름을 입력하고 정상적으로 저장 및 링크 작동이 이루어지는지 확인합니다.

분류명 특수문자 필터링 해제와 보안 리스크

그누보드 5.1.12 버전 이후에는 XSS(Cross-Site Scripting) 관련 취약점에 대응하기 위해 분류명 입력 및 링크 처리 시 특수문자 필터링 로직이 추가되었습니다. 이로 인해 분류명에 특수문자를 사용할 경우 링크 오류 등이 발생할 수 있습니다.

보안 리스크와 주의사항

  • XSS 취약점 노출: 필터링 로직에서 특정 특수문자 제한을 임의로 해제하거나 수정할 경우, 주소입력창이나 사용자 입력 값에 악의적인 스크립트가 삽입되어 사용자 권한 획득 및 페이지 강제 이동 등의 악의적인 행위가 발생할 수 있는 보안 취약점이 노출될 수 있습니다.
  • 권장 조치: 필요한 특수문자를 필터링 처리에서 제외하여 사용할 수는 있으나, 보안상 이유로 적용된 패치이므로 나중에 다른 방법으로 보안 문제가 해결되기 전까지는 웬만하면 필터링 설정을 그대로 유지하고 분류명에 특수문자를 사용하지 않는 것이 권장됩니다.

그누보드 분류명 특수문자 제한 관리 가이드

그누보드 5.1.12 버전 이상에서 분류명(카테고리)에 특수문자를 사용하려는 경우, 보안 패치로 인한 제약 사항을 이해하고 아래 기준에 따라 대응하십시오.

상황별 선택 기준

  • 보안 우선: XSS 취약점 노출 위험을 방지하려면 기본 필터링 설정을 유지하고 특수문자가 포함되지 않은 분류명을 사용하십시오.
  • 기능 필요: 괄호 () 등 특정 문자가 반드시 필요한 경우, 관련 파일의 정규식 필터링에서 해당 문자를 제외하도록 수정하십시오.

다음 행동

  1. 백업: 수정 전 /common.php와 adm/board_form_update.php 파일을 반드시 백업하십시오.
  2. 코드 수정: 각 파일 내 preg_replace 정규식 패턴 /[\<\>'\"\\'\\\"\%\=\(\)\/\^\*]/에서 허용할 문자를 제거하십시오.
  3. 검증: 관리자 페이지에서 분류명을 저장하고, 게시판 목록에서 해당 분류 링크가 정상적으로 작동하는지 확인하십시오.

실전 FAQ

Q. 괄호 () 외에 다른 특수문자도 필터링을 해제할 수 있나요?

  • 답변: 기술적으로는 정규식에서 해당 문자를 제거하여 허용할 수 있으나, 이는 XSS 공격에 취약해질 수 있습니다. 보안 패치의 취지를 고려하여 꼭 필요한 문자만 최소한으로 허용하십시오.

Q. 정규식을 수정했는데도 분류 링크가 작동하지 않습니다.

  • 답변: 관리자 페이지(adm/board_form_update.php)와 공통 처리 파일(common.php)의 정규식 수정이 일치하는지 확인하십시오. 한쪽만 수정할 경우 파라미터 전달 과정에서 문자가 필터링되어 링크 오류가 발생할 수 있습니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.