BackEnd/Spring Security


CSRF (Cross-site request forgery)란? 스프링 시큐리티에서 POST 방식을 이용하는 경우 기본적으로 CSRF 토큰이라는 것을 이용하게 된다. 별도의 설정이 없다면, 스프링 시큐리티가 적용된 사이트의 모든 POST 방식에는 CSRF 토큰이 사용되는데 '사이트간 위조 방지'를 목적으로 특정한 값의 토큰을 사용하는 방식이다. CSRF 공격에 대한 이해를 해야한다. 가장 대표적인 것이 과거 옥션 털린 것. 어떤 출처(CSRF - 토큰값으로 출처 표현)에서 호출이 진행되었는지 따지지 않기 때문에 생기는 허점 서버에서 받아들이는 정보가 특별히 사전 조건을 검증하지 않는다는 단점 결론 CSRF 공격은 '사이트간 요청 위조' 라고 번역될 수 있다. 예를 들어 A라는 사이트가 존재한다고 가정하고..


*그냥 확인 하기 쉽게 home.jsp에 링크 걸어주기 home.jsp 메인페이지 로그인 로그인 정보 확인 방법5 가지(상속관계만 잘 이해하면 됨) [회원가입] [유저 홈] [관리자 홈] 게시판] --%> HomeController.java 폴리몰피즘 상속관계 이해하기 @GetMapping("/loginInfo") public String loginInfo(Principal principal) { log.info("loginInfo().."); //1.Controller를 통하여 Principal 객체로 가져오는 방법 String userId = principal.getName(); System.out.println("유저 아이디 : " + principal.getName()); //2.SpringCon..


지금까지는 세팅을 통해서 했지만 실무에서는 이렇게 하지 않는다. - username, password, enabled 와 같이 해당 DB를 만들라는 법이 없기 때문. (datatable 설계할 때 user에는 address, email, gender, image 등..여러가지 기타 칼럼이 들어가기 때문에) 로그인 정보를 세션에 올린다. 우리가 로그인을 시키는 이유는? - 로그인은 부차적인 거고 user 정보를 메모리에 올리는데 그 대표적 방법이 세션이다. - 로그인페이지 말고도 , 쇼핑몰이라면 --님 / 장바구니 / 개인정보 페이지 등. 로그인인 기본적인 기능이고, 그 이후 정보를 써먹는게 기본적인 목적이다. jstl에서는 principal을 쓴다. - principal.emp, principal.emp..


* 전에 했던 DB보면 password를 쌩으로 넣음. password 암호화 시키기 전에 만들었던 customNoOpPasswordEncoder 여기에 암호화 모듈 넣기 암호화를 시키기 위해서는 암호화 알고리즘이 필요하다. 암호화를 시키는 것을 encoding / 원래대로 되돌리는 것을 decoding 이라고 한다. 모든 암호화는 encoding, decoding 단계를 거치게 되어있다. BCryptPasswordEncoder란? 스프링 시큐리티 프레임워크에서 제공하는 클래스 중 하나로 비밀번호를 암호화하는데 사용할 수 있는 메서드를 가진 클래스 BCryptPasswordEncoder는 BCrypt 해싱 함수를 사용해서 비밀번호를 인코딩 해주는 메서드와 사용자에 의해 제출된 비밀번호와 저장소에 저장되어..


* Oracle 사용 USERS & AUTORITIES TABLE Oracle, SQL create table users( username varchar2(50) not null primary key, password varchar2(100) not null, enabled char(1) DEFAULT '1' ); create table authorities ( username varchar2(50) not null, authority varchar2(50) not null, constraint fk_authorities_users foreign key(username) references users(username) ); create unique index ix_auth_username on autho..


* 로그인페이지 커스텀 해보기 (부트스트랩적용) security-context.xml 로그아웃하면 세션은 날려버린다. HomeController.java SecurityController가 아님! package edu.bit.ex; import java.util.Locale; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bin..


https://nxxrxx.tistory.com/14 [로그인처리] Spring securiy 4 https://nxxrxx.tistory.com/13 [로그인처리] Spring security 3 https://nxxrxx.tistory.com/12 [로그인처리] Spring security 2 * https://nxxrxx.tistory.com/11 1. 프로젝트 생성 2. 한글 처리 3. 보안 관련.. nxxrxx.tistory.com 403 에러처리 : 권한 처리 하는 방법 security-context.xml member로 로그인했을때 security/admin을 치고 들어가면 권한때문에 403에러가 난다. 이때 에러처리 방법 제공 : access-denied-handler 권한 에러가 뜨면 /..


https://nxxrxx.tistory.com/13 [로그인처리] Spring security 3 https://nxxrxx.tistory.com/12 [로그인처리] Spring security 2 * https://nxxrxx.tistory.com/11 1. 프로젝트 생성 2. 한글 처리 3. 보안 관련 라이브러리 추가 4. 스프링 설정 파일 분리 5. 보안 관련 설정 파.. nxxrxx.tistory.com * admin 권한 줘보기 security-context.xml admin.jsp SecurityController에 admin추가하기 /admin page principal : 결과 member로 로그인하고 localhost:8282/ex/security/admin을 들어가면 admin이 아니..


https://nxxrxx.tistory.com/12 추가하기 * 자세한건 다음에 (참고 사이트 확인) member.jsp /member page 결과 http://localhost:8282/ex/security/member 을 치면 http://localhost:8282/ex/login으로 넘어간다. User : member / Password : member 치고 로그인 후 http://localhost:8282/ex/security/member 로 다시 들어가면 권한이 생겨서 security/member 에 들어갈 수 있다. 로그인 할 때 User, Password 바꾸려면 user name="member" password="{noop}member" 이부분 변경하면 된다. * 참고 https://m..