check_write_token함수의 $_REQUEST['token']에 관하여 질문하고자 합니다. 채택완료
</p>
<p>// POST로 넘어온 토큰과 세션에 저장된 토큰 비교</p>
<p>function check_write_token($bo_table)</p>
<p>{</p>
<p> if(!$bo_table)</p>
<p> alert('13올바른 방법으로 이용해 주십시오.', G5_URL);</p>
<p> </p>
<p> $token = get_session('ss_write_'.$bo_table.'_token');</p>
<p> set_session('ss_write_'.$bo_table.'_token', '');</p>
<p> </p>
<p> if(!$token || !$_REQUEST['token'] || $token != $_REQUEST['token'])</p>
<p> alert('14올바른 방법으로 이용해 주십시오.', G5_URL);</p>
<p> </p>
<p> return true;</p>
<p>}</p>
<p>
안녕하세요
위의 코드에서
(1)$_REQUEST['token']의
token이 무엇인지요?
(2)변수가 들어가있는게 아니라
왜 $_REQUEST['token'] 이 형태 인지요?
초심자입니다.
쉽게 설명좀 부탁드립니다.
좋은 하루 되세요.
답변 2개
PHP 에서는 슈퍼 글로벌 변수라고하여
$_SERVER, $_POST, $_GET, $_FILES, $_REQUEST 등 여러가지 슈퍼 글로벌 변수가 있습니다.
(1)
$_REQUEST 란 $_POST, $_GET을 모두 포함한 슈퍼 글로벌 변수입니다.
예를들어 해당 실행하는 코드의 앞 페이지에서 $_POST로 보내든, $_GET으로 보내든
모두 $_REQUEST 슈퍼글로벌 변수에 해당 값들이 저장됩니다.
이때 checke_write_token() 함수가 실행되기전 $_POST 또는 $_GET 으로 toten 값을 전달 했다는 의미입니다.
따라서 $_REQUEST['token'] 으로 값을 받은 것 입니다.
추가 예로 앞에서
댓글을 작성하려면 로그인이 필요합니다.
웹 취약점중인 하나인 세션하이젝킹을 방어를 하려고 토큰의 개념을 사용하고 있습니다.
세션 하이젝킹(Session Hijacking)이란 공격자인 해커가 사이트 이용자의 세션값을 가로채어 그 시스템을 접근하려는 공격입니다.
웹 서버(PHP 로직 부분)에서 토큰을 요청 웹 브라우저에 할당을 합니다. ( 그누보드 $_REQUEST['token'] => 브라우저 사용자 식별용 ) 어떠한 특정행위 (게시글 글쓰기.. 웹에서 일어나는 기타 행위들..)를 웹서버로 요청을 할때 브라우저에서 할당 받은 토큰과 웹서버에 있는 토큰과 비교를 합니다. ( $_REQUEST['token']와 세션 토튼 비교) 정말 이 토큰이 요청한 사용자인지 검증하는 단계인거죠..
이게 도입이 되기전까지는 공격자가 게시글을 사용할때 img태크, iframe태그등으로 자신의 레벨을 올리는 링크를 올려서 그 올린글을 웹사이트 관리자가 보았을때 시스템 계정을 탈취를 했습니다.
이러한 행위를 방지하는 차원으로 이해해주시면 되겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인