본문 바로가기

반응형

전체 글

(644)
CSRF, CORS 개념 두가지 단언가 이름도 비슷하고 자꾸 혼동이와서 정리할려고 한다. CORS(Cross-Origin Resource Sharing) CORS는 한국어로 직역하면 교차 출처 리소스 공유라고 해석된다. 여기서 교차출처란 "다른출처"를 의미한다. 출처란 무엇인가? 이때 출처는 Protocol과 Host를 나타낸다 (:8080 , :433 포트 번호까지 포함) 즉 서버의 위치를 찾아 가기 위한 기본적ㅇ니 것들을 합쳐놓은 주소이다. SOP(Same-Origin Policy) 웹 생태계에는 다른 출처로의 리소스 요청을 제한하는 것과 관련된 두 가지 정책이 존재한다. 한 가지는 이 포스팅의 주제인 CORS, 그리고 또 한 가지는 SOP(Same-Origin Policy)이다. SOP는 지난 2011년, RFC 6454에..
SpringSecurity 정리 및 샘플코드 SpringSecurity란? Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권환, 인가 등)을 담당하는 스프링 하위 프레임워크이다. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리하고 있다. Filter는 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받지만, Intercepteor는 Dispatcher와 Controller 사이에 위치한다는 점에서 적용 시기의 차이가 있다. Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있다. 인증관련 architecture 의존성 org.sp..
SpringSecurity 패스워드 암호화(bcrypt) bcrypt란? bcrypt는 비밀번호 해시함수로 Niels Provos와 David Mazieres에 의해 만들어졌으며 Blowfish라는 암호에 기반하였다. Bcrypt는 조정할 수 있는 알고리즘을 써서 패스워드를 저장한다. Bcrypt는 패스워드를 해싱할 때 내부적으로 랜덤한 솔트를 생성하기 때문에 같은 문자열에 대해 다른 인코드된 결과를 반환한다. 하지만 공통된 점은 매번 길이가 60인 String을 만든다. Spring Security의 PasswordEncolder를 사용 의존성 org.springframework.boot spring-boot-starter-security Bean 등록 @Bean public PasswordEncoder passwordEncoder() { return Pas..
Mybatis VS Hibernate SQL Mapper SQL Object 필 SQL Mapper는 SQL 문장으로 직접 데이터베이스 데이터를 다룬다. 즉, SQL Mapper는 SQL을 명시해줘야 한다. EX) Mybatis, JdbcTemplates 등 ORM(Object-Relational Mapping) , 객체 - 관계 매핑 데이터베이스 데이터 Object 필드 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다. 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로 데이터를 조작할 수 있다. 객체 간의 관계를 바탕으로 SQL을 자동으로 생성한다. JPA(Java Persistent API) java ORM 기술에 대한 API 표준 명세로..
git flow, git hub flow , git lab flow ujuc.github.io/2015/12/16/git-flow-github-flow-gitlab-flow/ Git flow, GitHub flow, GitLab flow Git flow, GitHub flow, GitLab flow 에대해서 좀 알아보자. 머리아프다. ujuc.github.io
OAuth, OAuth2 생각해보기 웹 사이트를 이용할 때 "네이버로 로그인" 같이 별도의 회원가입 없이 로그인을 제공하는 서비스를 이용해 본적이 있다. 이때 해당 플랫폼의 아이디가 있다면 외부 서비스에서도 인증을 가능하게하고 그 서비스의 API를 사용할. 수 있다. 이것을 OAuth라고 한다. 이러한 OAuth가 왜 생겼을까? 제 3자의 웹서버에 아이디와 비밀번호를 제공하고 싶지 않은 요구가 첫번째 이고 개인정보를 여러곳에 노출시키면 피싱에 둔감해집니다. 무엇보다도 Application이 안전하다는 보장이 없기 때문입니다. 두번째로는 비밀번호의 인증방식의 문제 신뢰: 사용자가 애플리케이션에 ID/PW를 제공하기 꺼려함 피싱에 둔감해짐: 각 종 애플리케이션들에 ID/PW 를 계속 제공하는 경우 접근범위가 늘어남에 따른 위험 부담..
Layered Architecture 레이어드 아키텍처 계층을 분리하는 구조이다. 한 곳에서 모든 작업이 한꺼번에 이루어진다면 코드의 복잡성 증가, 유지보수의 어려움과 유연성 부족, 중복 코드의 증가, 낮은 확장성등 문제가 발생하기 때문이다. 1. Presentation layer : View 표현과 이벤트 처리, 데이터 포맷 책임 사용자와 최종 접점에 위치하여 사용자로부터 데이터를 입력 받거나, 요청된 데이터를 출력해 보이는 계층 외부로부터의 어플리케이션에 대한 요구를 받아들이는 동시에 처리 결과를 사용자에게 보여주는 부분이며, 컨트롤러의 구성 요소와 상호작용한다. 2. Control layer : Controller 구성 요서간의 처리 흐름을 제어, 데이터 조작 의뢰, 데이터 변환 및 연산, Exceptino과 Error 처리 사용자로부..
Maven vs Gradle Maven 이란 무엇인가? Apache Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다. Apache License로 배포되는 오픈 소스 소프트웨어이다. 프로젝트를 작업하다보면 여러 라이브러리 파일이 필요할때가 있다. 어떤 라이브러리는 다른 라이브러리를 의존하는 경우도 있고 이러한 라이브러리 덩어리들을 메이븐 pom.xml에 설정하기만 하면 네트워크를 통해서 필요한 라이브러리를 설치해준다. Ant vs Maven 지금은 gradle이 나왔지만 maven이 없던시절에는 ant라는 빌드를 사용했다. Ant는 비교적 자유도가 높은 편 * (Ant : 전처리 / 컴파일 / 패키징 / 테스팅/ 배포 가능) Maven은 정해진 라이프사이클에 의하여 작업 수행하며, 전박적인 프로젝트 ..

반응형