본문 바로가기
반응형

분류 전체보기110

[Spring] Spring Boot XSS Filter 생성하기 XSS란? XSS(Cross Site Scripting)란 사이트 간 스크립팅이라는 웹 보안 취약점입니다. 악의적인 사용자가 취약한 웹 애플리케이션에 스크립트를 삽입해 공격하는 것입니다. XSS 공격 유형 Reflected XSS : URL을 통해 Script 실행 Stored XSS : Script를 서버에 저장하여 요청/응답 과정을 통해 실행 DOM Based XSS : 피해자의 브라우저가 DOM생성할 때 악성 script 실행 위험성 쿠키 및 세션정보 탈취 악성 프로그램 다운 유도 의도하지 않은 페이지 노출 이 글에서는 제가 XSS 보안 취약점을 해결하기 위한 과정을 공유하려 합니다. 조사 결과, XSS 방지할 수 있는 다양한 후보가 있었습니다. (결론부터 말하자면, 일반적인 케이스에서는 4.번이 .. 2023. 12. 31.
[Spring] 세션 ID 값이 계속 바뀌는 현상 정말 오랜만에 블로그에 글을 포스팅하게 되었네요. 맨날 올려야지 올려야지 하면서 시간 없다는 핑계로 안 올렸던 것 같습니다. 문제점 업무를 하던 도중, 현재 근무하고 있는 회사에서 세션 관련 에러를 해결해달라는 문의가 들어왔습니다. 현재 근무 중인 회사는 이커머스 A 회사이고, B사인 PG사와 연동하여 결제 수단을 등록하는 상황에서 발생하는 문제였습니다. A 회사의 결제 수단 관리 탭 클릭 B 회사의 인증 창으로 리다이릭팅 되며 B 회사 결제 수단 등록 창 로드 카드 정보 입력 후 A 회사의 결제수단 관리 창으로 복귀 세션 만료, 에러 발생 세션 만료 에러는 세션의 정보가 바뀌거나, 실제로 세션이 만료되어 발생하는 에러로 파악하여, 크롬 개발자 도구를 통해 확인해보니 A 회사에서 발급하는 쿠키의 세션 I.. 2022. 10. 26.
[개발 공부] 객체지향 SOLID 원칙, 예제와 함께 이해하기 이번 포스팅에서는 자바 개발자 거나 취준생이시면 한 번은 들어봤을 법한 SOLID 법칙에 대해 포스팅해보려고 합니다. SOLID를 학부생 시절에는 그냥 개념만 외우고 넘어갔던 내용인데, 자바 개발자를 꿈꾸면서 다시 한번 제대로 정리해보자 하여 글을 작성하게 되었습니다. SOLID는 SRP, OCP, LSP, ISP, DIP의 앞 글자들을 딴 용어입니다. SRP (Single Responsibility Principle) - 단일 책임 원칙 OCP (Open-Closed Principle) - 개방 폐쇄 원칙 LSP (Liscov Substitution Principle) - 리스코프 치환 원칙 ISP (Interface Segregation Principle) - 인터페이스 분리 원칙 DIP (Depen.. 2022. 1. 24.
[개발 공부] Mac OS 자바 버전 변경하기 Mac OS로 여러 개의 프로젝트 개발을 하면서, Mac OS의 자바 기본 버전을 몇 번 수정할 때마다 구글링 해서 자바 버전을 변경했기 때문에, 한번 정리해 두려고 합니다. 설치된 자바 버전 전부 확인 아래 명령어로 설치된 자바 버전을 전부 확인할 수 있습니다. (명령어의 V 옵션이 대문자 V로 줘야하는 것을 주의하세요) $ /usr/libexec/java_home -V 자바 버전 변경하는 2가지 방법 1. 기본적인 Bash를 사용하는 경우 $ export JAVA_HOME=$(/usr/libexec/java_home -v 11) 2. zsh을 사용하는 경우 $ vim ~/.zshrc 해당 파일 제일 하단에 다음 내용을 수정 export JAVA_HOME=$(/usr/libexec/java_home -.. 2022. 1. 16.
[AWS] ACM 인증서 갱신/발급 받기 (DNS 검증) 이번 포스팅에서는 AWS의 다양한 서비스 중 하나인 ACM(Amazon Certificate Manager)의 인증서 갱신, 발급 과정에 대해 포스팅해보려고 합니다. ACM이란? ACM은 간단하게 말하면, SSL/TLS 인증서를 손쉽게 관리하고, 배포, 갱신할 수 있는 AWS 서비스입니다. 이 글을 작성하게 된 계기 작년 이맘때쯤 AWS서비스를 이용해서 배포한 웹 애플리케이션의 인증서가 만료된다는 이메일을 받았습니다. 이메일을 요약해보자면 이렇습니다. 너의 인증서가 2022년 2월 13일 만료된다. AWS ACM이 인증서를 자동으로 갱신하는걸 실패했으니 스스로 갱신해라. 기존에 이메일 검증 방식으로 인증서를 발급 받았으니, 이번에도 이메일 검증 방식 사용해라. DNS 검증 방식 사용하고 싶으면 DNS 검.. 2022. 1. 16.
[Spring] 생성자 주입을 사용해야 하는 이유 인턴을 시작한 초기 단계에, Spring 프로젝트 코드 분석을 하다가 신기한 점을 발견해서 질문을 한 기억이 있습니다. Spring프로젝트에서 Controller를 작성할 때, 저는 항상 @Autowired 어노테이션을 사용해 Service의 의존성을 주입하고, 하나의 객체에서 주입 한 객체를 사용하곤 했습니다. 코드 분석을 하는 도중, @Autowired 어노테이션 없이 Service 객체를 주입받아서 사용하는 Controller를 발견해서, 질문을 하게 되었습니다. 이 Controller는 어떻게 @Autowired 어노테이션 없이 서비스 객체를 주입받아 사용하나요? 돌아온 답변은 다음과 같았습니다. @RequiredArgsConstructor 어노테이션과, 생성자 주입 방식에 대해 공부해보세요 질문.. 2021. 12. 5.
[개발 공부] Spring "Command line is too long" 에러 해결 방법 프로젝트 배포를 위해 테스트를 진행하면서 Spring Boot로 개발한 백엔드 애플리케이션을 실행하려고 Run 버튼을 클릭했는데, 다음과 같은 에러가 발생했습니다. 처음 보는 에러라 당황했지만, 같이 개발업무를 해주시는 선배 개발자분께서 해결책을 알려주셨습니다. 해결 방법 프로젝트의 .idea폴더 > workspace.xml 파일에 다음처럼 추가해줍니다. 그리고 다시 어플리케이션을 Run 해주면 정상적으로 잘 실행됩니다. 2021. 9. 27.
[개발 공부] env: sh/r: No such file or directory 해결 방법 Java 스프링 부트로 개발한 백엔드 프로그램을 배포하기 위해 해당 프로젝트를 빌드해야 했습니다. 스프링 부트 프로젝트를 빌드하면, jar 형식의 파일이 나오는데, 그 파일을 배포할 웹 서버에 실행시켜놓으면 내장 톰캣 웹서버로 인해 WAS가 되어 편리한 배포가 가능합니다. 해당 프로젝트를 빌드하기 위해 ./gradlew build 명령어를 통해 프로젝트를 빌드했습니다. env: sh\r: No such file or directory 원래였으면 정상적으로 진행됐을 빌드가 안되고 있었습니다. 해당 에러 문으로 구글에 검색을 해보았는데 영어로 된 해결책을 찾게 되어 정리하게 되었습니다. 해당 에러 문은 윈도우 OS와 Mac, Unix 등 운영체제의 차이점 때문에 발생되었습니다. 윈도우 OS에서는 엔터, 즉 .. 2021. 9. 23.
[AWS] RDS 인스턴스 다른 계정으로 이관하기 (프리티어) 이번에 AWS 기반으로 운영하던 서비스 이관 업무를 맡게 되었습니다. 서비스 전체를 이관하기 위해서는 다음과 같은 과정을 거쳐야 합니다. 도메인 이관 EC2 이관 RDS 이관 보안설정 ALB(로드 발란서) 이관 이 작업들 중 RDS 이관을 먼저 진행했습니다. A계정에서 B계정으로 RDS 인스턴스를 그대로 옮기면 됩니다. 저는 먼저 다음과 같은 과정으로 이관하려고 했습니다. A계정의 RDS 인스턴스 스냅샷 생성 해당 스냅샷을 B계정과 공유 B계정에서, 공유된 스냅샷으로 데이터베이스 복원 매우 간단하다고 생각하고, 작업을 진행했습니다. 1. A계정의 RDS 인스턴스 스냅샷 생성 그럼 A계정으로 로그인해서, 해당 데이터베이스에 대한 스냅샷을 생성하겠습니다. 2. 해당 스냅샷을 B계정과 공유 이 단계에서 처음에.. 2021. 9. 20.
[Spring] AOP 사용 방법 (예제 코드) 흔히 스프링의 특징으로 DI, IoC, POJO, AOP 등을 대부분 언급합니다. AOP는 Aspect Oriented Programming의 약자입니다. 한글로 하면 관점 지향 프로그래밍이죠. 하지만 이름만 들어서는 AOP에 대해 제대로 알 수가 없고 예측 조차 힘들었습니다. AOP에 대한 개념적인 내용은 다음 포스팅에 작성하였으니 참고하여주세요. https://programforlife.tistory.com/103 [Spring] Spring 기초 이번 포스팅에서는 인턴을 하게 된 회사에서 진행해준 신입사원 교육 중, Spring의 기초에 대해 정리해보려 합니다. Spring Boot로 프로젝트를 진행했던 경험이 있어서 Spring의 특징에 대해 어느 정도 programforlife.tistory.c.. 2021. 9. 9.
반응형