ajax csrf 토큰 설정 문의 드립니다.
419
작성한 질문수 90
if(!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(s.type)){
x.setRequestHeader("X-CSRFToken", csrf_token);
}
영상중 위 코드 중에서 if문 로직을 이해 못해서 질문 드려요
질문1.
if(!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(s.type))
if문중 s.type 을 출력해보니 "post"로 console에 나옵니다
제가 생각하기에
/^(GET|HEAD|OPTIONS|TRACE)$/i.test(s.type) 이건 false고
앞에 !를 붙여서
false가 true로 변하게 되는것 같습니다 >> 제가 생각 하는게 맞는지 궁금합니다.
질문2.
질문1의 제 생각이 맞다면 s.type이 post면 if문이 작동하고
s.type이 get이면, csrf 토큰 설정이 안되는것이라고 생각 해도 되나요?
get방식은 왜, 토큰 설정을 하지 않을까요?
질문3.
14분 22초 영상 말씀을 빌리자면 "세팅타입이
GET이나 HEAD나 OPTIONS나 TRACE중 하나면, x객체에 csrf토큰을 추가"한다고 말씀해 주셨습니다.
혹시 "GET이나 HEAD나 OPTIONS나 TRACE중 하나가 아니면, x 객체에 csrf토큰을 추가 하는게 맞는게 아닌지 궁금합니다"
질문4. if문에서
끝부문 .test(s.type)는
.test 앞에 있는 객체나 값들이 s.type 이 맞는지 확인하여
맞으면 true
틀리면 false를 주는 메소드라고 생각해도 되는지 궁금합니다.
항상 좋은 강의 늘 감사드립니다
답변 1
1
전체 질문에 대한 답변을 드리자면...
말씀하신 내용이 맞습니다. 강좌에 약간 오류가 있는데 정확하게 이야기하자면 HTTP프로토콜 방식에서 GET|HEAD|OPTIONS|TRACE 가 아닌 상태면 POST, PUT, DELETE 등이 남을텐데 이런 경우에 csrf 토큰을 설정하기 위해서 그렇게 사용하고 있는 내용이고 이해하신 부분이 맞습니다.
GET방식은 어차피 URL로 직접 접근이 가능한 요소라서 csrf 토큰 방어자체가 의미가 없습니다만 post 같이 내부적으로 데이터를 전송하는 프로토콜은 만약 웹브라우저가 아닌 프로그램을 작성해서 해당 POST페이지에 직접 데이터를 전송함을 방지하기 위함이라고 보시면 됩니다.
다시 설명하자면 post페이지의 정상 접근은 A를 통해 B(post대상)를 접근하는게 일반적인데 만약 어떤 요청이 A를 통하지 않고 직접 B(post대상)을 접근하는것을 막기위해서 A에서 발행된 csrf토큰을 B에서 확인하는 개념이라고 생각할 수도 있습니다.
그리고 test()함수는 객체의 값을 확인하는 용도가 아닌 그냥 자바스크립트 정규식 표현법을 사용한 부분입니다. 정규식은 문자열을 대상으로 하며 자세한 내용은 링크로 대체하겠습니다.
도움이 되셨으면 좋겠습니다. 더 궁금하시거나 부족한 부분이 있으면 질문 주시기 바랍니다.
iis 접속후 자동으로 로그인 창이 나오도록 설정이 기능한가요?
0
84
2
리스트 이동 시 창 에러 발생
0
90
1
배포후 회원 등록 후 로그인 에러...
0
88
2
내부 서버 오류
0
85
2
app.config["MONGO_URI"] = "mongodb://localhost:27017/pm_db"
0
65
2
DB 검색하면 데이터가 없습니다. 라고 나와요. 5시간을 찾아봐도 모르겠어서 문의드려봅니다.
0
63
1
몽고db studio3T를 깔았는데
0
71
2
flake8과 linter
0
89
3
500이 뜹니다.
0
66
2
첨부파일 삭제
0
73
2
검색기능 질문
0
75
2
google.py
0
75
2
Studio 3T에 DB insert가 되지 않는 문제를 해결하지 못하고 있습니다 ㅠ
0
93
3
혹시 전체 코드 공개되어 있나요?
0
104
1
join.html 의 form 태그값 을 member_join() 에서 처리못함.
0
112
1
google.py 몽고db 샘플데이터 만들기
0
111
2
flake8 설치 이후 명령팔레트에서 linter가 안보입니다.
0
253
2
파이썬으로 만들어서 웹호스팅에 올릴경우
0
316
1
현재 구글검색 무한스크롤변경 문의합니다
0
306
1
몽고디비아틀라스로 추가 공부해서 올립니다.
0
225
1
IIS 500.19에러
0
669
2
버전 문제도 수정했는데 결과가 안나옵니다.
0
265
1
데이터베이스 저장관련 질문입니다.
0
280
1
test가 생기지 않습니다.
0
519
3





