티스토리 뷰
크로스 사이트 요청 위조
: 사이트가 신뢰하는 사용자(인증된 사용자)를 통해 공격자가 원하는 명령을 대신 실행하게 된다.
대부분의 웹사이트에서 사용자가 보내는 요청 데이터가 정상적인 경로를 통한 요청인지 구분하지 못한다.
1. GET 방식 CSRF
: 공격자는 게시판 등에 이미즈 태그를 보이지 않도록 사이즈를 최소화하여 자신의 계좌로 이체를 수행하는 요청 URL을 삽입해, 사용자가 해당 글을 클릭했을 때 계좌 이체가 실행되도록 공격할 수 있다.
2. POST 방식 CSRF
: 가장 많은 CSRF 공격방식은 자동 글쓰기 이다.
3. 대응기법
: CSRF 공격 취약점을 예방하려면 실제 사용자의 브라우저에서 이볅된 값을 이용해 요청이 발생되었는지를 서버에서 점검할 수 있도록 해야 한다.
- CSRF 를 근본적으로 해결하기 위해 사용자 세션마다 고유한 토큰값을 발생시킨다.
1
2
3
4 |
// Token 값 생성 및 등록 코드 작성
// 이후 게시판 글 쓰기 페이지에서 Token 값 전달 받아 비교.
String csrfToken = UUID.randomUUID().toString();
session.setAttribute(Session.CSRF_TOKEN, csrfToken); |
cs |
- 발급한 Token을 페이지마다 전달한다.
1 |
<input type="hidden" name="csrfToken" value="${sessionScope._CSRF_TOKEN_}" /> |
cs |
- Token을 비교한다.
1
2
3
4
5
6 |
String storedCsrfToken = (String) session.getAttribute(Session.CSRF_TOKEN);
String requestedCsrfToken = request.getParameter("csrfToken");
if( storedCsrfToken == null || !storedCsrfToken.equals(requestedCsrfToken)){
return new ModelAndView("redirect:/board/write");
} |
cs |
'Secure Coding' 카테고리의 다른 글
안전하지 않은 예외처리 (2) | 2016.05.02 |
---|---|
파일 업로드/다운로드 취약점 (0) | 2016.05.02 |
크로스 사이트 스크립팅 [ XSS ] (0) | 2016.04.29 |
로그인 시도 횟수 제한 (0) | 2016.04.28 |
패스워드 정책 (0) | 2016.04.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- sort
- 예외처리
- java
- order by
- maven
- INSERT
- table
- servlet
- list
- Spring
- Baekjoon Online Judege
- BFS
- RequestMapping
- onBackPressed
- boj
- onPostExecute
- AlertDialog.Builder
- 안드로이드 비콘
- 이클립스
- 안드로이드 스튜디오
- controller
- DP
- algorithm
- mybatis
- REDIRECT
- jsp
- DFS
- 자바
- restfb
- indexOf
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함