loginForm.jsp 수정 이것저것 새로 만들어서 폴더트리 첨부. 스프링 시큐리티는 유저 정보가 UserDetails 라는 인터페이스에 담김. UserDetails를 구현하는 PrincipalDetial.java를 만들 것임. PrincipalDetail 안에 User user를 인자로 가진 생성자를 만들어서 UserDetails의 메서드를 오버라이딩함. package com.pure.blog.config.auth; import java.util.ArrayList; import java.util.Collection; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.user..
취업 준비
XSS? - XSS(cross-site scripting)는 웹페이지에 악의적인 스크립트 코드를 주입할수 있는 취약점이다. 이를 막기 위한 소스 네이버 Lucy XSS filter http://naver.github.io/lucy-xss-filter/kr/ Lucy XSS Filter XSS 공격이 가능한 HTML 요소를 신뢰할 수 있는 코드로 변환하거나 삭제하는 기능을 제공한다. 공격이 가능하지 않은 HTML 요소는 허용을 한다. 4.1. 설정 파일 Lucy-XSS Filter의 필터링 규칙은 화이트리 naver.github.io CSRF? - CSRF 공격(Cross Site Request Forgery)은 웹 어플리케이션 취약점 중 하나로 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 ..
스프링 시큐리티는 비밀번호가 해쉬화 되어야 로그인이 가능. SecurityConfig 수정 package com.pure.blog.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springfra..
인증이 되지 않은 사용자가 접근할 수 있는 주소를 /auth/로 수정했음. 각종 url을 맞게 수정함. loginForm.jsp 의 버튼을 다시 form 안쪽에 집어넣고 post 메서드를 넣어줬음. Username: Password: 로그인 상태 유지 로그인 user.js에서 btn-login 부분을 삭제함. config 패키지를 생성한 후 SecurityConfig.java를 생성함. package com.pure.blog.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMe..
pom.xml 수정 (주석처리 해제) 4.0.0 org.springframework.boot spring-boot-starter-parent 2.6.2 com.example blog 0.0.1-SNAPSHOT blog My 1st blog prj 1.8 org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime true mysql mysql-connector-java runtime org.p..
application.yml server: port: 8282 servlet: encoding: charset: UTF-8 enabled: true force: true spring: mvc: view: prefix: /WEB-INF/views/ suffix: .jsp datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul username: pure password: pure1234 # ddel-auto: create로 하면 서버 재시작마다 비어 있는 새 테이블을 생성함. jpa: open-in-view: true hibernate: ddl-aut..
스프링 시큐리티를 사용하지 않는 기존 방식의 로그인 구현 loginForm.jsp Username: Password: 로그인 상태 유지 로그인 User.js 수정 let index = { init: function() { $("#btn-save").on("click", ()=>{ this.save(); }); $("#btn-login").on("click", ()=>{ this.login(); }); }, save: function() { let data = { username: $("#username").val(), password: $("#password").val(), email: $("#email").val() }; //javascript 오브젝트임. //ajax 호출시 default가 비동기 호..
트랜잭션 - 일이 처리되기 위한 가장 작은 단위 - 트랜잭션이 여러개 모여서 하나의 트랜잭션이 될 수 있음. - 그렇게 여러 개의 트랜잭션을 모아 놓은 것을 서비스라고 부름. DB 격리수준. 1. Read Committed - 오라클 DB의 default - 온라인 서비스에서 가장 많이 선택되는 격리수준 - 어떤 트랜잭션의 변경 내용이 commit이 되어야 다른 트랜잭션에서 조회가 가능함. - 하지만 이 또한 non-repeatable read 부정합이 발생함. 2. Repeatable Read - MySQL의 default - 트랜잭션이 시작되기 전에 커밋된 내용에 대해서만 조회할 수 있음. https://joont92.github.io/db/%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85..