티스토리 뷰

시큐어 코딩 실습



#시큐어 코딩을 해야하는 이유?

해킹의 피해를 최소화시키기 위해.


데이터베이스 암호화까지 시큐어 코딩의 범주에 속한다.


#파로스(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


쿠키는 HTTP 통신 시 사용자 정보를 유지하기 위해 서버에서 생성해 응답헤더에 붙여 클라이언트에 전송하는 정보이다. 전달된 쿠키 정보는 웹 브라우저에 의해 사용자의 PC메모리나 파일에 저장된다.

    • 쿠키의 속성


쿠키를 발행할 때 다양한 옵션의 속성을 설정할 수 있다.

- Secure : SSL 이용 시에만 전송하도록 설정
- HttpOnly : 자바 스크립트에서 액세스 불가능하도록 지정

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 에 다음과 같이 수정해준다.




      • 참고사항(DAO에서 알리아스 대신 쓰는 방법)


Spring SQL에서 쿼리를 작성할 때 SELECT 시 컬럼명 앞에 객체가 가진 변수로 Alias를 지정해줬다.
하지만 그러한 방식보다 위에 resultMap 으로 지정해버리면 Alias를 지정하지 않아도 컬럼명으로 자동으로 Set된다.


    • 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
링크
«   2024/12   »
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
글 보관함