발생일: 2021.02.09 키워드: JWT, JSON Web Token, 세션 기반, stateless, Access Token, Refresh Token, 액세스 토큰, 리프레시 토큰 문제: 이번엔 인증 과정에 JWT를 사용해보기로 했다. 건너자리 B가 코드를 다 짜왔고, 자세한 설명까지 보태서 이해가 쏙 되게 공유해줬다. (좋은 내용을 쉽게 이해하고 왔으니^^) 레거시만 운영해왔던 J에게도 JWT를 이용한 인증 관리를 설명해주려고 한다. 기존 환경과 비교해서 이해하기 쉽게 정리해봤다. 해결책: JWT(JSON Web Token)는 인증 토큰을 정의하는 방법에 대한 표준(RFC 7519)이다. (여러 서버 간에) 안전하게 인증 정보를 주고 받을 수 있도록, 인증 토큰을 생성하고 해석하는 방법을 규정한..
발생일: 2020.05.25 키워드: HMAC, salted hash 문제: HMAC 과 hash 에 salt 를 적용한 게 어떤 차이가 있을까? 실제로 쓰다보면 큰 차이가 없는 것 같은데... 해결책: 잘 정리된 글이 있다. security.stackexchange.com/questions/29951/salted-hashes-vs-hmac 요약하면, - 해시 함수는 기본적으로 길이에 제한이 있는 취약점(length extension)이 있음 (예: 모든 해시값에 대한 사전을 만들어두고 역으로 조회) - 이런 사전형 복호화를 방어하기 위해 salt를 적용하는데, (예: hash(원본 + salt)) 이렇게 해도 사전으로 복호화하면 몇 가지 패턴으로 원본과 salt를 구별해낼 수 있음 - 원래 HMAC(메..
발생일: 2015.05.16 키워드: Google Recaptcha, Captcha, 캡차, 리캡차 문제: 진행하고 있는 서비스에 구글 리캡차를 적용하려고 한다. "리"캡차이지만, 현재 활용되고 있는 방식은 예전과 다르게 원클릭으로 사람인지 판단하는 방식이다. 브라우저의 인터랙션을 보고 사용자인지를 판단하는 것 같은데, 생각보다 뭔가 더 똑똑한 알고리즘이 내장되어 있을 것 같다.ㅎㅎ 어떻게 적용하면 되지? 해결책: 발급과 적용 과정 모두 엄청 간단하다. 1. 리캡차 개발자 페이지에서 캡차를 등록한다. https://developers.google.com/recaptcha/docs/start 서비스명과 캡차가 노출될 도메인 목록을 작성한 후에 서브밋하면 바로 키가 발급된다. 2. 등록이 완료되면, 공개키와..
발생일: 2013.10.18 키워드: OAuth 문제: 보안은 늘 어려운 것 같다.잘 정리된 문서를 찾기도 어렵고, 있다 하더라도 난 좀 이해하기 어렵더라. @_@ 이번에 OAuth 인증 처리가 필요하던 차에, 한빛 소프트에서 나온 EBook을 보게 됐다.오잉~~ 쉽게 설명되어 있어서 참 좋더라. :D http://www.hanb.co.kr/ebook/look.html?isbn=9788979149944 책 읽으면서 정리해둔 게 있어 옮겨둔다. 해결책: 서버사이드 웹 애플리케이션 1. 권한 서버로 권한 코드 요청하기 요청 URL 예: https://accounts.google.com/o/oauth2/auth client_id: 등록한 애플리케이션의 아이디redirect_uri: 권한 코드 획득 후 리다이렉..
발생일: 2013.05.14 문제: 개인 프로젝트에서 서버를 담당하고 있는데, 앱 개발자분이 HMAC을 적용하자고 한다. HMAC은 Hash-based Message Authentication Code의 약자이다.우리 말로 하면 '해시 기반 메세지 인증 코드' 정도.여기서 의미하는 '해시 기반'이라는 게 뭘 의미하는 걸까. 덧) 지금은 `메시지 기반 인증 코드`라는 개념이 쉽게 이해되는데,처음 이 용어를 들었던 때엔 잘 이해되지 않았던 것 같다.메모해둔 내용이 꽤나 장황하지만, 그래도 누군가에겐 도움이 될 것 같아 옮겨둔다. 해결책: Hashing 키에서 주소로의 변환(key-to-address transformation). 다른 검색 방법처럼 키값을 비교하면서 찾는 것이 아니라, 키값에 어떤 연산을 시..
발생일: 2009.10.28 문제: 시스템 개발 시 어떤 내용들을 로깅하는 게 좋을까..? 해결책: 온라인 강의를 보다가 로깅에 대해 좋은 내용이 있어 메모를 남긴다. - 사용자별 접속내역 로깅을 기록관리하는가? (로깅항목: 사용자 ID, Login/Logout시간, 접속IP) - 접속내역 로깅을 보관하고 있는가? (3개월 이상 보관 할 것을 권장하나 업무의 성격에 따라 변경 가능) - 사용이력 로깅을 기록관리하는가? (로깅항목: 사용자ID, 사용시간, 사용이력-조회,수정,삭제, 프로그램ID) - 사용이력 로깅을 보관하고 있는가? (3개월 이상 보관 할 것을 권장하나 업무의 성격에 따라 변경 가능) - 로그온 시 보안경고 메시지 및 최종 사용정보를 표시하는가? (보안메시지- 시스템에서 하는 모든 활동이 ..