본문 바로가기
소소한 지식모음

UUID - 범용고유식별자

by 작심평생 2019. 6. 2.

UUID(범용고유식별자)

 - 소프트웨어 구축에 쓰이는 식별자 표준이다.
 - 고유성을 완벽하게 보장하기 위한 식별자로 국제기구에서 표준으로 정하고 있다. 
 - UUID 표준에 따라 이름을 부여하면 고유성을 완벽하게 보장할 수는 없지만 실제 사용상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용한다.
 - UUID는 128bit의 수로 표준형식에는 32개의 16진수로 표현되며 총 36개 문자 (32개 문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분한다.




사용하는 상황


  •     업로드된 파일명의 중복을 방지하기 위해 파일명을 변경할 때 사용.
  •     첨부파일 파일다운로드시 다른 파일을 예측하여 다운로드하는것을 방지하는데 사용.
  •     일련번호 대신 유추하기 힘든 식별자를 사용하여 다른 컨텐츠의 임의 접근을 방지하는데 사용.

 

구체적으로....

    임시파일 이름 생성

    웹사이트 방문자에 대한 유일한 값(세션값 등) 생성

    트랜잭션 ID 생성

    DB 시퀀스를 대신하는 Primary Key 생성


사용했을 때의 예시(toString()까지했을 때임)

:550e8400-e29b-41d4-a716-446655440000


 플젝에서도 controller에서 로그인페이지로 보낼 때 이용.  --> 사용하는 이유는 위에도 있겠지만 CSRF라는 공격을 방지하기 위해서 생성 후 토큰 값으로 보내서 서로 검증.


     String csrf = UUID.randomUUID().toString(); // 선언

     request.getSession().setAttribute("CSRF_TOKEN", csrf); // 세션에 담기

     model.put("csrf", csrf); // ModelMap에 담아서 보냄

     model.put("nickname", nickname); // nickname = id임



     그리고 JSP에서도 이를 받아서 hidden으로 다음 페이지로 보내는 방식인 듯.

<input type="hidden" name="csrf" value="<c:out value='${csrf}' />"/>


자세한 내용 참고

https://itstory.tk/entry/CSRF-%EA%B3%B5%EA%B2%A9%EC%9D%B4%EB%9E%80-%EA%B7%B8%EB%A6%AC%EA%B3%A0-CSRF-%EB%B0%A9%EC%96%B4-%EB%B0%A9%EB%B2%95


https://kshmc.tistory.com/entry/UUIDUniversally-Unique-Identifier-UUID


댓글