본문 바로가기

Security5

크롬에서 쿠키 전송 되지 않는다? 외부도메인 SameSite 필자는 개발하던 중 CSRF토큰 발급을 Cookie(CsrfTokenRepository) 로 하고 있는 상황에서 CSRF쿠키를 받지 못하는 현상을 발견하였다. 번호인증의 경우 외부 서비스를 사용해야 하는데, 여기서 번호인증이 끝나고 콜백으로 클라이언트가 서버에 인증완료를 요청할때 쿠키를 전송하지 못하는 현상이 발생한 것이다. (쿠키를 전송하지 못하면 CSRF token을 재갱신한다) 쿠키가 전송되지 않아 발생할 수 있는 문제를 알아보도록 한다. 최근에 크롬에서 쿠키 정책 SameSite을 변경함에 따라 발생된 이슈이다. https://www.chromium.org/updates/same-site SameSite Updates - The Chromium Projects Home of the Chromium.. 2020. 3. 24.
Spring Security Login에 따른 이전페이지(Referer) URL 이동SavedRequestAwareAuthentication SuccessHandler 소개 Security에서 Login 인증 성공에 따른 이전페이지로 이동할 수 있도록 제공해주는 Handler가 있는데 그것이 바로 SavedRequestAwareAuthenticationSuccessHandler 이다. Security설정할때 SuccessHandler로 이 클래스를 등록해주면 된다. ex ) @Override protected void configure(HttpSecurity http) throws Exception { http .formLogin() .loginPage("/login") .successHandler(successHandler()) .permitAll() ... ; } 다음은 이 핸들러에 대한 동작 과정에 대한 간단한 설명이다. 먼저 로그인을 해야하는 권한 페이지로 접속했을때.. 2019. 12. 4.
Spring Security CSRF, Referer 용어 Spring 사이트 간 요청 위조(또는 크로스 사이트 요청 위조, 영어: Cross-site request forgery, CSRF, XSRF)는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다. 유명 경매 사이트인 옥션에서 발생한 개인정보 유출 사건에서 사용된 공격 방식 중 하나다. 사이트 간 스크립팅(XSS)을 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면, 사이트간 요청 위조는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것이다. 일단 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트.. 2019. 5. 2.
Spring Security Filter및 DB 인증 암호화 인증과정 설명 (UsernamePasswordAuthenticationFilter) Spring Security를 적용하게 되면 각 필터를 각 순서에 대한 실행된다. 각각의 필터의 목적은 다르며 실행 요청에 따라 처리를 할수도, 스킵이 될 수도 있다. 먼저 필터의 각 역활부터 보기로 한다. 그 다음에 이글의 주요목적인 로그인에대한 필터 인증 과정을 설명하도록 한다. Spring Security Filter 설명 SecurityContextPersistenceFilter : SecurityContextRepository에서 SecurityContext를 가져오거나 저장하는 역할을 한다. (SecurityContext는 밑에) LogoutFilter : 설정된 로그아웃 URL로 오는 요청을 감시하며, 해당 유저를 로그아웃 처리 (UsernamePassword)AuthenticationFil.. 2019. 4. 26.
Spring Boot 2.0 Security - Static Resource ( favico.ico, css, js , image ) 인증서버를 개발하면서 디버깅을 해보던중 /favicon.ico 요청에 대한 302 Redirect가 발생한것을 발견하였다. 기존 스프링에서 잘 동작되던 리소스 접근이 현재 버전으로 개발하면서 정적인 리소스들을 왜 접근이 불가능할까 궁금하였다. 기본적으로 정적인 리소스들은 접근이 가능해야 하지 않나? 이에 대한 의문을 풀고 있던 중 Spring Boot 2.x버전에 대한 업데이트 부분이 눈에 들어왔다. https://spring.io/blog/2017/09/15/security-changes-in-spring-boot-2-0-m4 Spring Boot 2.x 들어오면서 보안향상을 위해 static resouce 까지 보호하고 있었던 것이다. 정적 리소스에 접근하기 위해선 Seuciry 설정이 따로 필요하다.. 2019. 4. 24.