전체 글118 전략 패턴과 캡슐화 개념을 이용한 도메인과 검증 로직 최적 분리 과정 💫시작하기 전에 프로젝트에서 스케줄러 기능을 개발하면서 ‘검증 로직을 도메인 클래스에서 분리’한 과정을 기록하고자 합니다. 해결 과정은 아래와 같습니다. 검증 책임을 가진 클래스를 별도 생성하여 분리 JPA 임베디드 타입과 전략 패턴을 이용한 분리(feat. 래퍼 클래스) JPA 임베디트 타입과 스프링 validation 혼합 시스템에서 발생한 에러를 적절히 처리해서 사용자의 불편을 최소화하는 것은 개발의 기본 덕목이지만, 보통 에러는 클라이언트의 잘못된 요청이나 입력에서 비롯되는 경우가 많았습니다. 에러 처리를 위한 코드가 늘어나다 보니 시스템 복잡도가 점점 증가했습니다. 때문에, 이 이상 에러 처리에 고집하기보다 에러 예방을 통해 위험 발생 가능성을 사전에 최대한 배제하는 것이 좋겠다고 생각했습니다... 2022. 12. 2. JWT 토큰 탈취시 대처법에 대한 고찰 AS-IS 사용자에게 다가가는 서비스를 만들기 위해선 보안도 반드시 고려해보아야 한다고 생각합니다 이번에 보안을 적용해볼 프로젝트는 MVVM의 단순 DB I/O 작업을 하는 서버이며, 아래와 같은 구조로 동작합니다 로그인을 통해 인가된 사용자 보낸 요청(일정 CRUD)을 서버가 응답합니다 저는 사용자를 인증하는 부분:기밀성에서의 위험을 최소화 할 수 있는 방법을 고민해 보았습니다 기존 토큰 인증 방식 로그인 - access-token 발급 - 서비스 요청 - 서버에서 access-token 검증 - 서비스 응답 //토큰 검증기 public JwtCode validateToken(String token) { try { Jwts.parserBuilder().setSigningKey(key).build().p.. 2022. 12. 2. 동적 주입으로 버전 관리시 DB 연동 정보 숨기기 서버가 DB와 연결되는 부분에서의 위험 기존 RDS 연결 방식 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver //application.yml에 데이터 베이스와 연결하는 인증 정보가 그대로 노출됨 url: example.db.net username: ohseungyun password: passwordString jpa: database: mysql generate-ddl: true show-sql: true 위험! 깃 허브를 통해 소스코드를 관리하는 등 버전 관리 로그를 통해 소스코드가 유출되면 데이터 베이스가 직접 공격 받을 수 있다 위험! 데이터 베이스 관리자 이외에도 버전 관리에 동참하는 모든 사람은 권한과 관계없이 데이터 베이스 .. 2022. 12. 2. Static 장점 제대로 살리기(feat. 프로그래밍 패러다임은 어우러져야 한다) 그동안 메모리를 차지한다는 이유로 Static 키워드를 활용하는 것을 두려워 했었습니다 하지만 필요한 경우에 Static을 사용하지 않는다면 오히려 비효율이 발생한다는 것을 알게 되면서, 그동안 Static의 장점을 살리지 못했다는 반성을 하게 되었습니다 때문에, 이번 기회에 Static에 대해 정리해 보고자 합니다 목차 Static 장단점 및 특징 언제 사용할까? 프로그래밍 패러다임은 어우러져야 한다 Static의 장단점 및 특징 Static의 특징 Static 은 JVM이 시작될때 메모리에 올라가 프로그램이 종료될 때까지 사라지지 않는다 인스턴스를 생성하지 않아도 클래스의 메서드와 필드에 접근을 가능하게 한다 모든 인스턴스에서 공유된다 Static의 장점 반복적으로 생성자를 호출할 필요가 없어 매번 .. 2022. 11. 22. 이전 1 2 3 4 5 ··· 30 다음