티스토리 뷰
시큐어 코딩 실습
#시큐어 코딩을 해야하는 이유?
해킹의 피해를 최소화시키기 위해.
데이터베이스 암호화까지 시큐어 코딩의 범주에 속한다.
#파로스(Paros)
파로스는 Proxy 프로그램 중 하나. 파로스를 설치하면 Proxy Server를 구축할 수 있다.
Proxy = 브로커, 즉 웹 요청을 처리할 때 임시 저장소를 거쳐서 데이터를 가져오는 요청 및 응답의 중개자.
프록시를 가지고 해킹을 할 수 있다. 요청과 응답을 중간에 잡게 되니까, 사용자가 보냈던 요청정보를 중간에 바꿔서 응답을 보내고, 응답정보를 중간에 바꿔서 사용자에게 요청을 보낸다.
파로스 설정하기
브라우저가 요청을 프록시를 경유하도록 만들어주어야 한다.
크롬 → 설정 → 고급설정 표시 → 네트워크 : 프록시설정 → LAN 설정 → 확인
파로스를 켜 놓은 상태에서 네이버를 연다. 그리고 파로스를 보면 네이버가 뜨는 것을 볼 수 있다.
#HTTP(Hyper Text Transfer Protocol)
Message 의 구조
Request 구조
Request Line
Header
Blank Line
Body
Response 의 구조
Status Line
Header
#Session 과 Cookie
Session
HTTP는 하나의 TCP연결에 하나의 요청과 하나의 응답을 처리하고 연결을 종료하는 일회성 프로토콜이기 때문에, 서버는 클라이언트의 정보를 지속적으로 관리하지 못한다.
그래서 Web Server는 클라이언트의 정보를 지속적으로 관리하기 위해 Session Token을 사용한다.
web.xml 에서 session을 설정할 수 있다.
<session-config>
<session-timeout>10</session-timeout>
</session-config>
Cookie
쿠키의 속성
Cookie cookie = new Cookie("username", "smahn");
cookie.setSecure(true); // 쿠키를 SSL 이용시에만 전송하도록 설정
cookie.setPath("/blog"); // 쿠키 경로 설정
cookie.setDomain("google.co.kr"); // 쿠키 도메인 설정
cookie.setHttpOnly(true); // HttpOnly 설정
#실습1. 일반 쿠키 등록 후 Trap 걸어 다른 페이지로 가게 하기
먼저 SECURE 계정을 만들고, HuCloud 프로젝트의 rootContext.xml 에 다음과 같이 수정해준다.
http://localhost:8080/HuCloud/ 로 접속하면 아래와 같은 화면을 볼 수 있다.
참고사항(DAO에서 알리아스 대신 쓰는 방법)
BoardController.java를 열어서 FILE_PATH 내용을 지우고, resources 폴더의 uploadFiles 의 주소를 붙여넣는다.
private static final String FILE_PATH = "C:\\Users\\206-001\\Documents\\workspace-sts-3.7.2.RELEASE_web\\HuCloud\\src\\main\\webapp\\WEB-INF\\resources\\uploadFiles";
CookieController.java 에 Cookie 등록하는 구문을 다음과 같이 추가해준다.
그리고 재시작해서 사이트에 접속한다. 아래 창에 Normal Cookie라고 쓰고 전송 버튼을 누르면, 이렇게 Trap을 걸어서 페이지를 바꿔줄 수 있다.
그런 후 Cookie 탭에서 Greeting! 을 입력 후 전송을 한다. 그러면 웹이 넘어가지 않고 기다리는 것을 볼 수 있다.
계속 돌아가는 것을 볼 수 있는데 , Paros가 가로채서 Trap 처리 시켰기 때문에 Paros에서 넘겨줘야 다음으로 넘어가게 된다.
Paros에서 Continue를 누르면 다음으로 넘어가게 된다.
#실습2. 보안 쿠키
보안쿠키를 사용하면 쿠키를 안전하게 이용할 수 있다. SSL통신을 이용하기 위해서 CookieController에서 cookieMethod2인 보안쿠키에서 setSecure 와 setHttpOnly를 준다.
'프레임워크 > Spring' 카테고리의 다른 글
[Secure Coding 실습] Encoding (0) | 2016.05.30 |
---|---|
싱글톤 (0) | 2016.04.28 |
Web Socket으로 캐치마인드 만들기 (0) | 2016.04.27 |
Web Socket (0) | 2016.04.27 |
Spring으로 간단한 게시판 만들어보기(1) (1) | 2016.04.21 |
- Total
- Today
- Yesterday
- 게시판 만들기
- 클래스
- 메뉴바에 버튼 생성하기
- ERD
- er다이어그램
- mongo db
- activity
- 제이쿼리
- 메소드
- 예외처리
- 배열
- 뉴스피드 가져오기
- 포스팅하기
- sql
- 자바프로그래밍
- aop
- 쿼리
- Relative Layout
- facebook 연동
- MVC
- mybatis
- query
- Linear Layout
- 뒤로가기 버튼
- 글쓰기 버튼
- Erwin
- jQuery
- JSP
- intent
- spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |