반응형
0. 배경지식 (쿠키와 세션)
쿠키란?
- 쿠키는 클라이언트(브라우저)에 저장되는 키, 값으로 이루어진 데이터 파일이다.
- 이름, 값 만료날짜 등의 정보가 있다.
- 쿠키는 일정 시간동안 데이터를 저장할 수 있어서 로그인 상태 유지에 사용된다.
쿠키의 원리
- 클라이언트가 브라우저로 서버로부터 reponse 받을때 쿠키를 받아 저장
- 이후 가지고있는 쿠키를 header에 넣어 request할때마다 요청함
세션이란?
- 클라이언트와 서버간 연결이 유지되고 있는 상태를 의미한다.
- 클라이언트가 서버에 첫 request를 보내면, 해당 서버의 클라이언트에게 유니크한 ID를 부여하고 이를 세션 ID라고 부른다.
세션의 원리
- 클라이언트가 서버로 request를 보낼시 세션 ID를 만들고 이를 쿠키를 통해 전달함
- 클라이언트는 이후 request마다 쿠키에담긴 세션ID를 보내고 서버는 이가 유효한지 검증함
1. 정의
응용 프로그램이 외부 입력값에 대한 신뢰를 전제로 보호 메커니즘을 사용하는 경우 공격자가 입력값을 조작할 수 있다면 보호 메커니즘을 우회할 수 있게 된다. 개발자들이 흔히 쿠키, 환경변수 또는 히든필드와 같은 입력값이 조작될 수 없다고 생각하지만 공격자는 이를 변경할 수 있고 이는 에러로 이어진다.
2. 안전한 코딩기법
- 상태 정보나 민감한 데이터는 서버에 저장하고 보안확인 절차도 서버에서 진행한다.
3. 예시
다음과 같이 사용자의 역할을 설정할 때 브라우저의 쿠키의 할당된 값을 사용하면 쿠키 값이 변경되는 경우 사용자의 역할이 의도하지 않은 값으로 할당될 수 있다.
따라서 사용자 권한, 인증여부 등 중요한 정보는 사용자의 입력값이나 쿠키가 아닌 서버에 있는 세션값을 비교하여 활용한다.
반응형
'프로그래밍 > 시큐어코딩' 카테고리의 다른 글
[시큐어 코딩] #12. 적절한 인증 없는 중요기능 허용 (0) | 2020.07.06 |
---|---|
[시큐어 코딩] #11. 무결성 점검 없는 코드 다운로드 (0) | 2020.07.06 |
[시큐어 코딩] #9 정수 오버플로우 (0) | 2020.07.02 |
[시큐어 코딩] #8 HTTP 응답 분할 / CRLF (0) | 2020.07.02 |
[시큐어 코딩] #7 크로스사이트 요청 위조 / CSRF (0) | 2020.07.02 |