반응형

자바/스프링(Spring) 35

스프링(Spring) 테스트 환경에서 @PostConstruct 비활성화

문제 발생: 새로운 옥션 서비스를 개발했으니, 테스트코드를 한번 짜보려는 상황 입니다. 테스트 요약: 1.옥션 하나를 제목을 지정한 뒤 생성 2. 옥션 꺼내기 3. 꺼낸 옥션과 1번에서 생성한 옥션의 제목이 동일한지 비교 ?!!!!?!!!!! 아니.. 왜안됨? 알고보니 문제가 테스트 부분이아닌, 메인(local환경) 부분 에서 더미데이터로 생성한 @PostConstruct 때문이였다. 해결방법: @Profile을 사용하여 메인, 테스트 환경을 분리하자. 즉, 내가 쓸 @PostConstruct는 메인환경에서만 사용할것이니, 메인 은 메인환경으로 테스트는 테스트로 설정하는것이다. 1.테스트 환경에서 쓸 application.properties 를 복사 붙이기하자. 2. 그 후, 로컬 환경 프로퍼티와, 테스..

XSS , CORS, CSRF 의 차이점

1. XSS 란? 이 공격을 한마디로 표현하자면, 스크립트를 사용한 공격이다. XSS의 목적은 쿠키 및 세션탈취 , 광고 등등 주요 타겟이 클라이언트다. 혹시 이런 경험 해본적 없는가? 사이트 또는 게시글을 눌렀는데 이상한 알림이 우수수 뜨거나, 이상한 사이트가 추가로 뜬다거나... 공격 시뮬레이션을 한번 해보겠다. 1. 나쁜 해커놈이 게시글 작성을 한다. 2. 게시글 제목 또는 내용 에 다음과같은 내용을 작성한다. 1 2 // 광고사이트로 이동시키는게 대부분이다. window.location.href = 'https://falsy.me'; cs 컴퓨터 팝니다.. or 상담있습니다. 등등 목적에 맞게안쓰고 이런 스크립트로 작성하는것이다. 자 이걸 제목에다 작성하면... 사용자는 게시글 목록페이지만 로딩하..

스프링 시큐리티 + OAuth2.0 (Kakao편)

이전 포스팅엔 구글 로그인 OAuth 연동을 해봤다. 이번 포스팅엔 kakao Oauth를 연동해보자. 0. 카카오톡 REST API , 시크릿키 받기 https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 카카오톡 로그인을 한뒤 몇가지 절차를 완료한후, ' 내 어플리케이션 ' 을 클릭하자. 중앙에 보이는 애플리케이션 추가하기를 눌러서 앱 이름과 사업자명을 입력하자. 필자는 테스트용으로 아무렇게나 입력했다. 만들어진 어플을 들어가면 4가지의 키를 받을수있는데, 우린 REST API 키를 가져가면된다...

스프링시큐리티 + OAuth2.0 사용해보자 (Google편)

이전 포스팅에서 이제 OAuth2.0 을 추가로 사용해보고자한다. OAuth란? OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 더욱 자세하게 설명하자면, 사용자들이 모든 어플리케이션마다 일일이, 아이디와 비밀번호를 제공하기 귀찮거나, 아이디와 비밀번호를 입력하다 피싱당할 위험이 있으니, 이미 등록해둔 거대 플랫폼(EX: Google, Twitter , KaKao, Naver..) 에서 인증과 토큰을받아서 원클릭 회원가입 And 원클릭 로그인 같은 기능을 구현할수있다. 설명보단 바로 코드로 한번 보자! 0.OAuth2.0 밑준비 (Goog..

스프링 시큐리티를 사용해보자!!

스프링 시큐리티란? Spring Security는 엔터프라이즈 애플리케이션에 대한 인증, 권한 부여 및 기타 보안 기능을 제공하는 Java / Java EE 프레임 워크입니다. 스프링 시큐리티를 사용하면, 프로젝트를 만들때 사용하는 로그인 및 회원가입 구현이 매우 편리하다!! 이전 방식으로 ArgumentResolver와 Interseptor를 구현해서 로그인의 인증절차를 하였지만, 스프링 시큐리티를 사용하면 더 더 편리하다. 0.준비하기 스프링 시큐리티 역시 라이브러리이기 때문에 가져와야한다. 1. 스프링 시큐리티 설정 (Security Config) 클래스 생성 스프링 시큐리티를 사용하려면 웹에다 등록을 해줘야한다. 사용하는 어노테이션의 의미는 다음과같다. @Configuration : 스프링이 Co..

자바(Spring) OpenAPI를 통한 JSON Parser 코드

이번시간엔 OpenAPI를 통해 데이터를 가져오는 코드를짜보겠다. OpenAPI는 개발자라면 누구나 사용할 수 있도록 공개된 API를 말하며, 개발자에게 사유 응용 소프트웨어나 웹 서비스의 프로그래밍 적인 권한을 제공한다. 즉, 데이터를 제공하는 외부 API라고 보면된다. 이 OpenAPI를 통해 우리는 실생활 데이터를 수집하여 프로젝트에 써먹을수있다. 그런데 이 실생활 데이터는 대부분 JSON을 지원한다. XML도 있긴하지만, 여러태그가 붙어서 JSON이 훨씬 가볍다. OpenAPI를 직접 체험해볼수있고 문제도 풀어볼수있는 환경이다. 카카오 2021 2차 코딩테스트 문제를 예시로 들어보자. https://programmers.co.kr/skill_check_assignments/67 프로그래머스 코드 ..

ArgumentResovler 와 Interceptor에 대하여

실제 실무 환경 이나 로그인 , 세션 , JWT기능을 구현하다보면 계속 봐야할 2개의 개념이 ArgumentResovler 와 Interceptor이다. 도대체 이 2개가 뭐냐?! ArgumentResolver의 역할: 1. 들어오는 세션 또는 JWT가 올바른지 검증 2. 1번의 과정을 하나의 어노테이션으로 정의함으로써 코드의 깔끔함 3. 2번에 인해 Controller단에 의존관계를 줄일수있다. Intercepter의 역할: 해당 페이지를 열 수 있는 권한을 부여합니다. EX) 비로그인 사용자는 물품구매 페이지를 이동할수없다. 사용자는 관리자페이지를 들어갈수없다. 실제로 요청을 받으면, RequestMapping 검색 -> Intercepter -> ArgumentResolver -> Mapping메소..

스프링(Spring) JSon 역직렬화 문제 (중복배열)

문제 발생: JSon 파일의 정보를 Spring객체로 변환하는도중 중첩배열을 인식하지 못함. 분명히 이름은 잘 입력되는데 address타입과 같은 중첩 배열은 인식을못한다. Jackson 라이브러리를 검색해보고 이 사태를 해결할수있는 방법을 하나 찾았다. 바로 @JacksonCreater 사용하는것이다. 문제해결 @JsonCreator는 Json -> 자바객체로 역직렬화 해주는 어노테이션이다. 반대로 자바객체 -> Json으로 바꾸는건 직렬화 라고한다. 여기서 받는 파라미터는 각각 JsonProperty로 이름을 연결해준다. 실제로 잘 입력된다. 이외에도 JackSon 파일에 관해서 궁금한게있으면 JackSon 라이브러리를 참고하자. 아래링크는 JSon 라이브러리 번역을 잘해놓은 블로그 링크다. http..

스프링 타임리프(Thymleaf) 한눈에 정리하기

타임리프를 사용하기전에 확인해야할 정보 1.타임리프 의존성이 제대로 주입되고 있는지 확인한다. 타임리프를 '제대로' 쓰려면 시작하기전에 타임리프가 제대로 설치되어있는지 확인하자. 2. Model에 대한 개념 스프링의 MVC 패턴이 여기서도 쓰인다. 타임리프는 View 와 Controller의 사이를 '동적'으로 연결해주는데 View의 정보를 Model에서 가져온다. 정보를 가져올때 Model의 'attributeName'을 통해 정보를 불러온다. 3.HTML태그 탄에 xmlns링크 걸어주기 모든 준비가 마쳤으면 이제 제대로 알아봅시다. -----------------------------------------------------------------------------------------------..

스프링 Redirect를 활용해보자

Redirect란? 쉽게 예시를들자면, 3년전에 가게 A를 운영하다가 가게 점주 김씨가 A를 허물고 가게 B로 이사를한것이다. 그렇다면 손님들은 점주 김씨가 운영하던 가게 A를 이용하려고 했지만, 가게 A는 이미 허물고 없어졋다. 그러더니 안내인 박씨가 나타나 손님들을 이끌고 "가게 A는 허물었으니 새로지은 가게 B로 오세요" 라고 손님들을 인솔하는것이다. Redirect는 딱 안내인 박씨가 하는 역활과 동일하다. Redirect를 활용한 사이트를 예시를 들자면 나무위키를 들어보자. 검색창에 ㄴㅇㅅ를 치면 자동으로 알아서 '나이스' 검색결과로 Redirect를 해준다. ㄴㅇㅅ이라는 검색결과는 적절치못하니 서버가 Redirect를 해준것이다. Redirect는 잘 활용하면, Post의 중복을 막아준다 해당..

반응형