https 적용 후 올바른 방법으로 이용해 주십시오. 에러가 납니다.

https 적용 후 올바른 방법으로 이용해 주십시오. 에러가 납니다.

QA

https 적용 후 올바른 방법으로 이용해 주십시오. 에러가 납니다.

본문

3076999789_1649401186.9236.png

 

안녕하세요.

https 적용 후 글쓰기 하면 올바른 방법으로 이용해 주십시오. 라는 에러가 발생하였습니다.

어떻게 해야 할까요?

    if (get_session('ss_bo_table') != $_POST['bo_table'] || get_session('ss_wr_id') != $_POST['wr_id']) {
        //alert('올바른 방법으로 수정하여 주십시오.', get_pretty_url($bo_table));
    }

주석처리해도 계속 나오는데 말입니다.. ㅡ_ㅡ;;;

 

 

이 질문에 댓글 쓰기 :

답변 3

주석처리한 것은 <올바른 방법으로 수정~~~>이고 경고창 문구는 <올바른 방법으로 이용~~>

내용이 다른데 저 곳을 주석처리한들 무슨 소용인가요?

 

경고창 나오는 것은

등록버튼을 누르면 자바스크립트에서 토큰을 생성(commn.js 마지막 부분)

bbs/write_update.php 상단 check_write_token(~)함수에서 토큰 체크

이때 나오는 것입니다(이것 주석하면 경고 안나옴)

 

이거 토큰이 어떻게 되는지 테스트 하려면 상당히 머리 아플텐데요

어떤 이유로 생성되어 세션에 저장 된 토큰과 post로 넘어온 토큰 값이 달라서 입니다

자바스크립트 에러가 있으면 저 토큰 부분이 실행이 안되어 당연히 경고창 나옵니다

 

common.js에서

var token = get_write_token(bo_table);

alert(token);  <---추가 //이 경고창이 안 나오면 자바스크립트 에러 때문인 것이구요

 

위의 토큰값과 bbs/write_update.php 상단에 다음 코드를 넣어서 나온 값이 어떻게 되는지 상황을 보세요

$token = get_session('ss_write_'.$bo_table.'_token');

echo $token; exit;

 

 

 

 

다시 https 올리고 테스트 해보니

write_update.php의 아래 부분에서 넘어서

// 토큰체크
check_write_token($bo_table);


common.lib.php 의
// POST로 넘어온 토큰과 세션에 저장된 토큰 비교
function check_write_token($bo_table)
{
    if(!$bo_table)
        alert('올바른 방법으로 이용해 주십시오.', G5_URL);

    $token = get_session('ss_write_'.$bo_table.'_token');
    set_session('ss_write_'.$bo_table.'_token', '');

    if(!$token || !$_REQUEST['token'] || $token != $_REQUEST['token'])
        alert('올바른 방법으로 이용해 주십시오.', G5_URL);

    return true;
}

=>  if(!$token || !$_REQUEST['token'] || $token != $_REQUEST['token'])
이 부분에서 이슈가 있습니다.

이 코드는 게시글 작성 시 사용되는 토큰을 처리하는 부분입니다. 여기서 각 줄의 역할을 설명드릴게요.
$token = get_session('ss_write_'.$bo_table.'_token');:

    $token = get_session('ss_write_'.$bo_table.'_token');
    set_session('ss_write_'.$bo_table.'_token', '');

    if(!$token || !$_REQUEST['token'] || $token != $_REQUEST['token'])
        alert('올바른 방법으로 이용해 주십시오.', G5_URL);
 

이 줄은 세션에서 ss_write_{$bo_table}_token이라는 이름의 값을 가져와 $token 변수에 저장합니다.
이 토큰은 게시글 작성 시 중복 제출을 방지하고, CSRF(Cross-Site Request Forgery) 공격을 막기 위해 사용됩니다.
set_session('ss_write_'.$bo_table.'_token', '');:
이 줄은 세션에 저장된 ss_write_{$bo_table}_token 값을 빈 문자열로 설정합니다.
이는 토큰을 초기화하여, 해당 토큰이 다시 사용되지 않도록 합니다.
이 두 줄의 코드는 주로 보안과 관련이 있습니다. 게시글 작성 시, 사용자가 제출한 토큰과 세션에 저장된 토큰을 비교하여 일치하지 않으면 제출을 막는 방식으로 동작합니다.

config 파일에서 도메인을 http로 지정해두셨는지 한번 확인해보셔야 할거 같습니다. 아니면 

js를 https로 불러와서 스크립트 에러가 나서 그럴수 있습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 13
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT