input 값을 넣으면 CSRF_TOKEN 값이 달라지는 이유가 뭔가요?
453
작성한 질문수 5
몇가지 궁금한 점 이 있습니다.
1. 회원가입 폼에서 input에 값을 넣고 submit을 하면
$token 값과 $_SESSION["CSRF_TOKEN"]값이 달라지는 이유가 뭔가요?
참고로 input에 값을 넣지 않으면 $token 과 $_SESSION["CSRF_TOKEN"]값이 같아집니다.
2. $_SESSION["CSRF_TOKEN"] 에 랜던한 32비트 값을 2진수에서 16진수로 바꿔준 값이 저장하고
그리고 $_SESSION["CSRF_TOKEN"]값을 "token"이라는 이름에 저장하는건가요?
3. output_add_rewrite_var()라는 함수는
www.aaaaa.com/aaaa.php?token=8cb6c897035b3a0e98f221f6a34d41f50a0d322172965c001d4d0526d88b9344
요렇게 해주는 역할을 하는건가요?
답변 3
0
1. 위에서 말씀드렸다시피 폼의 필드는 프론트엔드 상에서 표시되시므로 개발자도구를 사용하면 위조가 가능하다고 하였습니다. 악의적인 목적으로 토큰을 위조했고, 이 상태로 전송한다면 실패할 것입니다.
아래의 경우는 어떠한 것을 말하는 것인지 모르겠습니다. 세션에 담긴 토큰 값이 어떠한 이유에 의해 변화하거나 토큰 값이 위조(사용자에 의해, 또는 개발자에 의해)되지 않는 한 토큰이 서로 다를 수 없습니다.
2. 이 사항은 문서를 보는게 더 빠르겠습니다.
https://www.php.net/manual/en/function.filter-input.php#115086
0
0
CSRF 의 과정을 말씀하시는 것인가 봅니다. 스탭을 생각해보도록 할게요.
1. token 이라는 키를 가진 세션에 랜덤으로 생성한 32바이트 값을 넣습니다. (토큰 값은 검증이외에는 사용하지 않으므로)
2. output_add_rewirte_var() 함수는 폼에 필드를 추가해주죠. 폼 필드의 name 은 csrf_token 이며 값은 이미 생성한 값 $_SESSION['token'] 을 넣습니다. 새로고침 할 때마다 토큰을 재생성하므로 토큰 값이 바뀜.
3. 처리 프로세스에서는 폼에 넣은 토큰으로 넘어온 값(폼 필드는 위조가 가능하므로)과 $_SESSION['token'] 값을 비교하여 검증합니다.
질문의 대답이 되었으리라 생각해봅니다.
53강 레이아웃에서 css git 링크 관련 질문입니다.
0
35
2
[섹션 5]레포지토리 소스파일 오류 위치, 수정 제안
0
180
1
add configuratio.. 자체에
0
268
2
터미널에 글이 안써집니다.
0
635
1
일반적으로 쓰이지 않는 폰트 부분
0
465
1
readmore 클릭시 쿼리내용 받아오는게 이해가 안되요
0
497
1
$_GET과 $_POST를 구별하여야한다고 하는데 이건 왜 $_GET입니까 콜백이라서 그런가요? 왜콜백은 그래도 되나요?
0
475
1
xdebug 설치가 안됩니다.
0
401
1
xdebug 설치 확인 페이지가 안열립니다
0
360
1
if ~ elseif ~ else 문법 표준적인 코딩 방법에 대한 질문입니다.
1
523
1
mysqli_stmt_close($stmt) 관련 질문드립니다.
0
319
1
DB_CONNECTION 부분 질문
0
267
1
FILTER_VALIDATE FILTER_SANITIZE 차이를 모르겠습니다.
0
296
1
결과 ...
0
244
1
random_bytes
0
319
1
preg_replace_callback 질문드립니다.
0
435
1
호스팅에 php 코드 업로드하면 hash 로직이 보이진 않을까요?
0
266
1
버퍼링 궁금한 점이 있습니다.
0
287
1
restore_include_path 오류
0
316
1
php 에러발생..
0
3759
3
터미널로 php 실행시 document root 지정
0
244
1
posts가 null이라고 나옵니다.
0
209
2
rand() vs random_int() 차이점?
0
518
1
php 8 로 하시는 분들을 위한 ini 팁
1
513
1





