올바른 방법으로 이용해 주십시오. (2017-07-03 수정) 정보
올바른 방법으로 이용해 주십시오. (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("&", "&", $_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
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("&", "&", $_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
추천
2
2
댓글 10개
<input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>">
이 부분은 g4s 시절까지만 없던 내용이며 그누5 베타 초기 버전부터는 기본적으로 포함되어 있고 코멘트 쓰기 스킨 파일에서는 현재 사용되지 않습니다.
그리고 코멘트 관련 코드(if($w == 'cu') {........}) 부분도 올바른 방법으로 에러와는 관련이 없는 내용으로 알고 있는데 보다 자세하게 알 수 있을까요? 저 패치는 비밀 댓글 노출 취약점 패치였을 겁니다.
실제 위 내용을 모두 없애고 테스트를 해 봐도 글은 정상적으로 등록이 잘 됩니다.
QA 하다가 이 문제를 살펴보기 위해 스킨 백여 개 이상을 테스트해봤는데 저 부분들에서는 영향이 없는 걸로 파악이 됐었습니다. 물론 개인적인 테스트였을 뿐 확실한 건 아닙니다.
이 부분은 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') 의 경우는 올바른 방법의 문제는 아니지만 코드가 추가된 것이라서 함께 기록하였습니다.
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은 있던 게 삭제된 게 아니라 애초에 있었던 적이 없었습니다. 코멘트에는 임시저장 기능이 없기 때문입니다.
혹시나 해서 예전 버전 다 뒤져봤습니다.
제가 다른 분들 정보글에 이런 글을 남기는 건 처음인데 이 문제 하나만큼은 여러 버전의 그누보드와 스킨을 테스트해보면서 해봤었던 터라서 혹시라도 제가 놓치고 있는 부분이 있나 싶어서 계속해서 확인을 드립니다.
get_uniqid 를 계속해서 강조하셨던데 저 부분은 있으나 없으나 글은 정상적으로 등록이 잘 됩니다.
해당 내용은 패치와도 연관성이 없습니다. 보안 패치로 중간에 추가된 게 아니라 그누5 베타 버전 개발 시작부터 지금까지 원래 쭉 저렇게 있었던 고정된 코드입니다.
그리고 uid 값 저건 글쓰기 페이지에서는 임시저장 기능에 사용되는 부분인 걸로 알고 있습니다.
그래서 올바른.. 에러와는 연관성이 없으며 코멘트 쓰기에도 필요가 없는 것이죠.
2-1은 있던 게 삭제된 게 아니라 애초에 있었던 적이 없었습니다. 코멘트에는 임시저장 기능이 없기 때문입니다.
혹시나 해서 예전 버전 다 뒤져봤습니다.
제가 다른 분들 정보글에 이런 글을 남기는 건 처음인데 이 문제 하나만큼은 여러 버전의 그누보드와 스킨을 테스트해보면서 해봤었던 터라서 혹시라도 제가 놓치고 있는 부분이 있나 싶어서 계속해서 확인을 드립니다.
1-1 은 write.skin.php 에 어느순간부터 추가된 코드이므로, 없는 스킨인 경우엔 추가해야죠
1-2 ...
2-1 은 베타버전 등 몇몇개를 확인해보니 코드가 없네요. 혹시 있으면 제거하라는 의미입니다.
2-2 ...
2-3 은 버전업에 따른 코드가 변경된 내용이므로 영향이 없다고 할수는 없죠.
2-4 는 기존 스킨에서 누락된 경우가 있으니 참고라하는 의미입니다.
1-2 ...
2-1 은 베타버전 등 몇몇개를 확인해보니 코드가 없네요. 혹시 있으면 제거하라는 의미입니다.
2-2 ...
2-3 은 버전업에 따른 코드가 변경된 내용이므로 영향이 없다고 할수는 없죠.
2-4 는 기존 스킨에서 누락된 경우가 있으니 참고라하는 의미입니다.
제목은 올바른.. 에러 관련 글인데 get_uniqid 자체가 올바른 에러와는 관련이 없다는 말씀을 드린 겁니다.
개발 시작때부터 저 상태였었고요. 바뀐 적도 추가된 적도 없었습니다.
임시저장 기능에 사용되는 코드라서 혹시 임시저장을 뺀 스킨은 넣을 필요가 없습니다.
정보 글에 이런 댓글 남겨서 죄송합니다. 무의미한 논쟁이 될 것 같아서 이만 줄이겠습니다.
개발 시작때부터 저 상태였었고요. 바뀐 적도 추가된 적도 없었습니다.
임시저장 기능에 사용되는 코드라서 혹시 임시저장을 뺀 스킨은 넣을 필요가 없습니다.
정보 글에 이런 댓글 남겨서 죄송합니다. 무의미한 논쟁이 될 것 같아서 이만 줄이겠습니다.
음.. 저의 관점은 이렇습니다.
g4 스킨을 변경해서 사용한 경우도 생각해봐야 하지 않을런지요.
단순히 g4 코드만 g5 로 변경한 경우에 새롭게 추가된 코드가 있음을 인지하지 못하는 경우도 있으니까요.
g5 의 basic 스킨에서 확장된 것만 생각할 것이 아니라, g4 에서 넘어온 스킨도 ...
g4 스킨을 변경해서 사용한 경우도 생각해봐야 하지 않을런지요.
단순히 g4 코드만 g5 로 변경한 경우에 새롭게 추가된 코드가 있음을 인지하지 못하는 경우도 있으니까요.
g5 의 basic 스킨에서 확장된 것만 생각할 것이 아니라, g4 에서 넘어온 스킨도 ...
저는 1번과 2번을해서 문제 해결을 하였읍니다 감사합니다
좋은 정보 감사합니다.
정답을 알려주셔서 감사합니다
감사합니다.