2026, 새로운 도약을 시작합니다.

올바른 방법으로 이용해 주십시오. (2017-07-03 수정)

업그레이드 되면서 보안 강화차원에서 새로운 코드가 추가됩니다.

5.2.4 기준

1-1. 그누보드5 / skin / board / 폴더 / write.skin.php
<form name="fwrite" id="fwrite" action="<?php echo $action_url ?>" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off" style="width:<?php echo $width; ?>">
<input type="hidden" name="w" value="<?php echo $w ?>">

에서 아래와 같이 uid 관련 코드가 없으면 추가하세요

<form name="fwrite" id="fwrite" action="<?php echo $action_url ?>" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off" style="width:<?php echo $width; ?>">
<input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>">
<input type="hidden" name="w" value="<?php echo $w ?>">


1-2. 그누보드5 / skin / board / 폴더 / write.skin.php
<input type="submit" value="작성완료" id="btn_submit" accesskey="s" class="btn_submit">
5.2.3 버전에서 게시글 CSRF 취약점 관련 수정되면서 type="sumit" 가 아닌 경우엔 오류 발생
type="button" 또는 type="image" 등을 사용하고자 하는 경우엔 http://sir.kr/g5_tip/4837 참고


2-1. 그누보드5 / skin / board / 폴더 / view_comment.skin.php
    <form name="fviewcomment" action="./write_comment_update.php" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
    <input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>">
   <input type="hidden" name="w" value="<?php echo $w ?>" id="w">

의 내용에서 uid 관련 코드가 있으면 아래처럼 삭제하세요

    <form name="fviewcomment" action="./write_comment_update.php" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
   <input type="hidden" name="w" value="<?php echo $w ?>" id="w">


2-2. 그누보드5 / skin / board / 폴더 / view_comment.skin.php
<?php if($is_guest) echo chk_captcha_js(); ?>

의 내용이 추가

<?php if($is_guest) echo chk_captcha_js(); ?>

set_comment_token(f);


2-3. 그누보드5 / skin / board / 폴더 / view_comment.skin.php
$query_string = str_replace("&", "&amp;", $_SERVER['QUERY_STRING']);

의 내용이 보이면 아래의 것으로 변경하세요.

$query_string = clean_query_string($_SERVER['QUERY_STRING']);


2-4. 그누보드5 / skin / board / 폴더 / view_comment.skin.php
$query_string = clean_query_string($_SERVER['QUERY_STRING']);

if($w == 'cu') {
$sql = " select wr_id, wr_content from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
$cmt = sql_fetch($sql);

와 같이 코드가 보이면 아래처럼 변경하세요.

$query_string = clean_query_string($_SERVER['QUERY_STRING']);

if($w == 'cu') {
$sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
$cmt = sql_fetch($sql);
if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id'])))
$cmt['wr_content'] = '';


3. 위의 작업을 진행한후 익스플로러, 크롬, 파이어폭스, 사파리 등 다양한 브라우저로 테스트를 하세요
일부 브라우저는 캐시/임시파일 등으로 인해서 변경된것을 인지 못하는 경우가 있습니다.


참고자료
http://sir.kr/g5_tip/4524
http://sir.kr/g5_tip/4837
|

댓글 10개

<input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>">
이 부분은 g4s 시절까지만 없던 내용이며 그누5 베타 초기 버전부터는 기본적으로 포함되어 있고 코멘트 쓰기 스킨 파일에서는 현재 사용되지 않습니다.
그리고 코멘트 관련 코드(if($w == 'cu') {........}) 부분도 올바른 방법으로 에러와는 관련이 없는 내용으로 알고 있는데 보다 자세하게 알 수 있을까요? 저 패치는 비밀 댓글 노출 취약점 패치였을 겁니다.
실제 위 내용을 모두 없애고 테스트를 해 봐도 글은 정상적으로 등록이 잘 됩니다.
QA 하다가 이 문제를 살펴보기 위해 스킨 백여 개 이상을 테스트해봤는데 저 부분들에서는 영향이 없는 걸로 파악이 됐었습니다. 물론 개인적인 테스트였을 뿐 확실한 건 아닙니다.
2-1. <input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>"> 는 코드가 삭제되었군요
2-2 는 2-2와 2-3 으로 세분화 시켰습니다.
2-1~2-3 까지 수정하면 코멘트에서의 올바른 글 문제는 해결되네요

2-4는 if($w == 'cu') 의 경우는 올바른 방법의 문제는 아니지만 코드가 추가된 것이라서 함께 기록하였습니다.
1-2, 와 2-2 를 제외한 나머지 부분들은 올바른 에러와는 관련이 없습니다.
get_uniqid 를 계속해서 강조하셨던데 저 부분은 있으나 없으나 글은 정상적으로 등록이 잘 됩니다.
해당 내용은 패치와도 연관성이 없습니다. 보안 패치로 중간에 추가된 게 아니라 그누5 베타 버전 개발 시작부터 지금까지 원래 쭉 저렇게 있었던 고정된 코드입니다.
그리고 uid 값 저건 글쓰기 페이지에서는 임시저장 기능에 사용되는 부분인 걸로 알고 있습니다.
그래서 올바른.. 에러와는 연관성이 없으며 코멘트 쓰기에도 필요가 없는 것이죠.
2-1은 있던 게 삭제된 게 아니라 애초에 있었던 적이 없었습니다. 코멘트에는 임시저장 기능이 없기 때문입니다.
혹시나 해서 예전 버전 다 뒤져봤습니다.

제가 다른 분들 정보글에 이런 글을 남기는 건 처음인데 이 문제 하나만큼은 여러 버전의 그누보드와 스킨을 테스트해보면서 해봤었던 터라서 혹시라도 제가 놓치고 있는 부분이 있나 싶어서 계속해서 확인을 드립니다.
1-1 은 write.skin.php 에 어느순간부터 추가된 코드이므로, 없는 스킨인 경우엔 추가해야죠
1-2 ...
2-1 은 베타버전 등 몇몇개를 확인해보니 코드가 없네요. 혹시 있으면 제거하라는 의미입니다.
2-2 ...
2-3 은 버전업에 따른 코드가 변경된 내용이므로 영향이 없다고 할수는 없죠.
2-4 는 기존 스킨에서 누락된 경우가 있으니 참고라하는 의미입니다.
제목은 올바른.. 에러 관련 글인데 get_uniqid 자체가 올바른 에러와는 관련이 없다는 말씀을 드린 겁니다.
개발 시작때부터 저 상태였었고요. 바뀐 적도 추가된 적도 없었습니다.
임시저장 기능에 사용되는 코드라서 혹시 임시저장을 뺀 스킨은 넣을 필요가 없습니다.
정보 글에 이런 댓글 남겨서 죄송합니다. 무의미한 논쟁이 될 것 같아서 이만 줄이겠습니다.
음.. 저의 관점은 이렇습니다.
g4 스킨을 변경해서 사용한 경우도 생각해봐야 하지 않을런지요.
단순히 g4 코드만 g5 로 변경한 경우에 새롭게 추가된 코드가 있음을 인지하지 못하는 경우도 있으니까요.
g5 의 basic 스킨에서 확장된 것만 생각할 것이 아니라, g4 에서 넘어온 스킨도 ...
저는 1번과 2번을해서 문제 해결을 하였읍니다 감사합니다
좋은 정보 감사합니다.
정답을 알려주셔서 감사합니다
감사합니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,598
2741 3일 전 조회 120
2740 5일 전 조회 108
2739 1주 전 조회 210
2738 1주 전 조회 218
2737 1주 전 조회 181
2736 1주 전 조회 280
2735 3주 전 조회 284
2734 3주 전 조회 263
2733 1개월 전 조회 265
2732 1개월 전 조회 301
2731 1개월 전 조회 268
2730 1개월 전 조회 227
2729 1개월 전 조회 357
2728 1개월 전 조회 245
2727 1개월 전 조회 422
2726 1개월 전 조회 256
2725 1개월 전 조회 332
2724 1개월 전 조회 361
2723 1개월 전 조회 267
2722 1개월 전 조회 300
2721 1개월 전 조회 212
2720 2개월 전 조회 304
2719 2개월 전 조회 307
2718 2개월 전 조회 202
2717 2개월 전 조회 337
2716 2개월 전 조회 202
2715 2개월 전 조회 312
2714 2개월 전 조회 273
2713 2개월 전 조회 376
2712 2개월 전 조회 289
🐛 버그신고