Spring(52)
-
스프링 시큐리티 2. 인증(AuthenticationProvider 작동 방식과 커스텀 AuthenticationProvider 작성)
[ 스프링 시큐리티 기본 제공 인증 ] 스프링에서는 기본적으로 로그인 기능을 제공한다. 1에서 따로 계정을 만들 수 있는 로직을 만든 이유는 이 기본 설정을 바꿔 원하는 객체로 회원가입을 하고 로그인하는 서비스를 만들기 위함이다. 이를 달성하기 전에 스프링 시큐리티에서 기본 제공하는 로그인 기능을 확인해보고 무엇을 바꾸면 되는지를 알아보자. 기본 로그인을 확인하기 위해선 1편 프로젝트를 그대로 사용하고 SecurityCheckController라는 파일을 만들고 하단의 코드를 작성해주자. SecurityCheckController.java @RestController public class SecurityCheckController { @GetMapping("/security") public String..
2024.03.16 -
스프링 시큐리티 1. 암호화(PasswordEncoder를 통한 회원 가입 구현)
[ 암호화가 필요한 이유 ] 스프링 시큐리티를 통해 자체적으로 계정을 만든다면, 유저의 아이디와 비밀번호를 DB에 저장을 할 것이다. 많은 스프링 유튜브 강의에서 로그인을 할 때 비밀번호를 암호화해서 DB에 저장하는 걸 알려주지 않는다. 그래서 처음 로그인을 구현했을 때 이를 지키지 않았던 기억이 난다. 그래서 보안으로 반드시 기억해야 할 내용은 유저의 패스워드는 반드시 암호화를 해제할 수 없도록 단방향 암호화를 해서 저장해야 한다는 것이다. 그 이유는 DB 속의 내용은 안전하지 않다. SQL injection과 같은 방식으로 DB 속의 데이터가 갈취 당할 수 있으며 그 내용은 유저의 아이디와 비밀번호 테이블에서 가져올 내용일 수도 있다. 이 때 공격자에게 아이디와 비밀번호를 갈취당하더라도 서비스 상에선..
2024.03.16 -
CSRF와 CSRF 설정
[ CSRF ] CORS는 웹 브라우저에서 제공하는 하나의 보호기능이다. 하지만 CSRF는 실제로 서버에 가해지는 공격이다. CSRF 공격은 사용자의 의지와 무관한 공격자의 의도대로 서버에 특정 요청을 일반 사용자가 보내는 것이다. 처음 말을 들었을 때 무슨 말인지 정확하게 이해가 안됐었다. 일단 아래의 예시를 한 번 봐보자. 어느 날 메일로 XX 카드에서 이벤트 행사를 하니, 웹 사이트에 접속을 하라는 요청을 받았다. 이 때 이메일을 받은 사용자는 웹 사이트에 접속을 했고 이벤트 페이지가 있었지만 흥미가 없는 이벤트라 페이지를 닫았다. 그런데 갑자기 카드 회사에서 100만원이 빠져나가버렸다는 문자가 왔다. 무슨 일일까? 이렇게 CSRF 공격은 공격자가 실제 사용자가 접속하고자 하는 사이트와 매우 유사한..
2024.03.13 -
CORS와 CORS 설정
[ CORS ] 서버 사이드 템플릿으로 작성하면 CORS 에러를 겪지 못한다. 하지만 다른 도메인, 같은 도메인이라도 다른 포트 번호를 가진 애플리케이션끼리 통신을 하면 CORS 에러를 겪을 수 있다. 그 이유는 Chrome이나 Safari 같은 브라우저가 다른 origin을 가지는 경우 CORS 기능으로 보호를 하려고 하기 때문이다. 여기서 언급하는 다른 origin은 HTTP, HTTPS 같은 scheme이 다른 경우, 도메인 명이 다른 경우, 포트 번호가 다른 경우 모두 해당된다. 그 이유는 출처가 불분명한 애플리케이션끼리의 통신은 보안성 위험을 가지기 때문이다. 그래서 웹 브라우저가 애플리케이션을 도와 외부 공격자가 직접 서버측에 요청을 보내는 것을 차단하게 하여 보안적 기능을 제공하는 것이다. ..
2024.03.13 -
스프링 AOP - 실전 사용
보호되어 있는 글입니다.
2024.03.06 -
스프링 핵심 원리 - AOP 주의사항
보호되어 있는 글입니다.
2024.03.05