목록전체 글 (601)
sm 기술 블로그
DB CREATE TABLE site_user( id INT(20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, username VARCHAR(30) NOT NULL UNIQUE, `password` VARCHAR(150) NOT NULL, email VARCHAR(50) NOT NULL UNIQUE ); # 테스트 케이스 INSERT INTO site_user SET username = "유저1", `password` = "1234", email = "test@test.com"; SELECT * FROM site_user; password 길이를 적게하면 암호화 도중 에러가 발생한다. SiteUser 엔티티 import javax.persistence.Column;..
인증구조 기본적으로 인증은 다음과 같이 진행된다. 상세하게 설명해보면 한번 인증 후 다시 인증할 때는 토큰을 이용한다. CSRF공격이 이루어지면 다음과 같이 해커가 인증된 토큰을 훔쳐 인증에 사용한다. 최악에 상황에서는 금융 정보를 훔쳐 인터넷으로 계좌이체를 자유롭게 하게 된다. package com.mysite.sbb; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframew..
Spring Security Spring Security는 Spring기반 애플리케이션을 보호하기 위한 표준으로 직접 커스텀이 가능한 인증 및 Access Control 프레임워크이다. 이는 Java 애플리케이션에 인증과 인가(권한 부여)를 모두 제공하는 데 중점을 뒀다. Spring Security는 다른 Spring프로젝트와 마찬가지로 사용자 요구에 맞춰 쉽게 확장할 수 있다는 점이 최대 장점이다. 요약 하면 직접 커스텀이 가능한 인증 프레임 워크이다. gradle에 추가 implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.thymeleaf.extras:thymeleaf-extras-spri..
import java.util.*; import java.io.*; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); StringBuilder sb = new StringBuilder(); Stack stack = new Stack(); int N = sc.nextInt(); int cnt = 0; for (int i = 0; i < N; i++) { int T = sc.nextInt(); while (cnt < T) { cnt++; stack.add(cnt); sb.append("+").append("\n"); } if (stack.get(stack.size() - 1) == T) { sb...