프론트엔드 개발자가 되기위한 여정 -39

이정우·2022년 10월 22일
0

frontend-bootcamp

목록 보기
41/60

밸! 하~

밸로그 여러분 안녕하세요!

오늘은 잠깐 정보보안에 대한 지식을 가져가는 시간을 가져볼까 해요!

오늘의 주제는 바로바로!

JWT와XSS,CSRF를 볼수있도록 하겠습니다 !

왜 갑자기 정보보안이냐고요?

그 이유는

저희가 개발을 할떄에도 항상 고려를 해야하는것이 보안적인 측면입니다
물론 보안을 전문적으로 할수있겠지만 개발하면서 코딩중 그 부분을 어느정도는 걸러주게된다면
보안이 조금더 뛰어나지게 되겠고 많은 사람들이 더욱 신뢰를 가지고 사용을 할수있겠죠??

그럼 바로 봐볼까요!

먼저

JWT입니다!

JWT란?

JWT는 JSON Web Token의 줄임말로 선택적 서명 및 선택적 암호화를 사용하여 데이터를 생성하기 위해 제안된 인터넷 표준입니다 !

저희가 어떤페이지에 로그인을 했는데 로그아웃을 하지 않고 2~3시간이 되면은 다시 로그인 하는 경우들이있죠?
그이유가 바로 토큰이 만료가 되었기때문에 자동으로 로그아웃을 시키고 다시 로그인을 하게 하는겁니다

그렇다면 한번 상태에 대해서 알아보겠습니다
JWT는 stateless한 상태라고 할수있겠습니다
즉 토큰은 서버에서 발급만 할뿐이고 , 클라이언트에 저장이 됩니다!

그럼 토큰으로 어떻게 검증을할까요?

1.클라이언트에서 사용자 인증을 위해 서버에 요청한다.
2.서버는 토큰을 발급하여 클라이언트에 내려준다.
3.클라이언트는 토큰을 localStorage, sessionStorage, Cookie 와 같은 장소에 저장한다.
4.필요한 요청마다, 토큰과 함께 서버에 요청한다.
5.서버는 토큰 검사를 통해 인증을 확인하고, 결과를 내려준다.

이렇 과정을 통해서 검증을 하고 결과를 나타낼수있게 됩니다
그리고
앞서 이야기드렸던 클라이언트에 저장이 된다는게 무슨말일까요?
즉 사용자가 로그아웃을 하게된다면 클라이언트에 저장된 토큰만 소멸될뿐, 서버와는 상호작용은 일어나지 않는다는것입니다!

여기서 중요한것

토큰은 서버에서 발급만 할뿐이고 클라이언트에 저장된다

바로 이것입니다 !

이게 저희가 오늘 다룰내용인 XSS와CSRF와도 같은 공격들에도 연관이있는데요
과연 어떻게 연관이 되어있는지 함께 알아가볼까요??

XSS란?

먼저 XSS가 무엇인지에 대해서 알아볼수있도록 하겠습니다

XSS는 Cross-site scripting이라는 이름으로
웹상에서 가장 기초적인 취약점 공격 방법의 일종입니다!

악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법인데요!
공격에 성공하게 된다면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며 보통 의도하지 않은 행동을 수행하거나 민감한 정보등을 탈취하게 됩니다!
자 그럼 이게 어떻게 토큰과 연관이 있을까요?

앞서 이야기드렸던것처럼

토큰은 서버에서 발급만 할뿐이고 클라이언트에 저장된다

라는것 기억하시나요?

토큰이 localstorage session 같은 브라우저 저장소에 저장이 되기때문에
이것을 악의적인 스크립트문을 넣어 DB를 속이고 잘못된 신호를 보내 정보를 유출하게 만든다면요??

그렇게 된다면은 중요한 정보가 나가게 되겠죠?
그래서 코딩을하게될때 이러한 부분을 고려를 하고 코딩을 한다면 훨씬 이용자측과 제공자 측에서도 도움이 되는 코딩을 할수있을것입니다!

그다음 설명드릴 내용은 바로 !

CSRF입니다 !

그럼 정의 먼저 알아볼까요?

Cross-Site Request Forgery입니다!

번역하면
사이트간 요정 취조방식입니다 !

자 이부분은 웹 애플리케이션의 취약점중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹페이지를 보안을 취약하게 한다던가 수정삭제등의 작업을 하게 만드는 공격방법입니다!

그럼 도대체 어떻게 공격을 할까요??

한번 나무위키의 예제를 가져와보겠습니다
. 나무위키의 토론 주소는 한때 'namu.wiki/topic/'으로 시작하며 뒤에 토론 개설 순서대로 붙는 일련번호가 붙는 형식으로 되어 있었습니다. 즉 이 패턴을 이용하여 일반적인 방법으로 접근할 수 없는 페이지를 오픈한다든지, 개발에 사용되고 실제로 사용하지 않는 샘플 페이지를 찾아낸다든지 등의 행위가 가능하는겁니다!

정말신기하죠
이렇게 된다면 관리자페이지에 접근을해서 관리자 권한으로 특정작업또한도 실행을 할수가 있게 된 것이겠죠!

자 오늘은 이렇게 정보보안에 대한 간단한 공격방식과 어떤것에서 발생되는 문제인지에 대해서 알아보았습니다
블로글를 읽으시는 여러분들은 꼭 개발을 하실때 이런부분도 같이 고려하고 개발을 해주시면 더욱 좋은 서비스를 제공할수있겠죠?

그럼 오늘도 이만!

밸~바!

profile
주니어 프론트엔드 개발자

0개의 댓글