Back-End16 [JPA] 민감한 데이터 암호화 / 마스킹하기 (Attribute Converter, @Converter) 어느 여름 낮.시원한 에어컨 아래, 냉커피를 마시며,막바지 API 개발을 하고 있는 다람쥐 사원. 그러던 중 메신저 알림이 울립니다. PM님 : 람쥐님 안녕하세요~ 😊오전에 전달주신 기능들 테스트 서버에서 확인했어요!누락된 내용은 없네요~ 최고 👍👍다만 한 가지 스펙이 갑작스레 추가된 게 있어요. 😭😭법적으로 문제될 수 있는 민감한 데이터가 추가로 발견되어서요.데이터베이스에 암호화하거나, 서버에서 보여줄 땐 마스킹,이 두 가지 기능 추가 부탁드려도 될까요?내일 오전 QA 시작 전까지 부탁드려요.람쥐님만 믿습니다! 🙇♂️🙇♂️🙇♂️혹시 이슈 있으면 언제든 알려주세요! 😉😉1. cardNo : 데이터베이스 저장 시 원문 / 불러올 시 마스킹2. holderName : 데이터베이스 저장.. Back-End/Spring 자료실 2024. 6. 23. [C# Blazor] NET::ERR_CERT_INVALID 오류 해결하기 원인 안녕하세요. C# Blazor 에서 빌드하여 웹 페이지를 로컬에서 SSL 인증서를 만든 다음에 띄워주는데요. 구글 크롬에서 위와 같이 NET::ERR_CERT_INVALID 오류가 나더라고요. 공인된 인증서가 아니라 구글 크롬 브라우저에서 오류가 나오도록 돼있는 것으로 보여요. 보통 고급 버튼을 눌러서 'URL 으로 이동하기(안전하지 않음)' 으로 나타나있는데... 고급 버튼을 눌러도 그런 이동하기 버튼도 없더라고요. 해결 방법 구글크롬 브라우저의 보안을 해제하여 접속합니다. '연결이 비공개로 설정되어 있지 않습니다.' 페이지에서 아래 명령어를 입력합니다. thisisunsafe 오류 화면에서 아무 곳이나 눌러 포커싱을 제거하고 'thisisunsafe' 키보드를 누르면 NET::ERR_CERT_I.. Back-End/Back-End 자료실 2023. 9. 4. [스프링 부트] Jasypt 설정 암호화로 Github Repo 에 안전하게 올리기 안녕하세요. 스프링 부트에서 Jasypt 라이브러리를 사용해서 설정을 암호화하는 방법을 알아봅시다. application.yml 파일에 아래와 같이 DB 접속 정보를 저장해둔다면, Github 레포에 올리지 못하겠죠? spring: profiles: local datasource: url: DB주소 username: DB계정 password: DB비밀번호 driver-class-name: com.mysql.cj.jdbc.Driver applicaiton.yml 을 .gitignore 파일에 추가하면, Git Stage 에 올라가지 않습니다. 그 다음에 작업자들끼리만 application.yml 파일을 공유해도 되지만, 공개 가능한 다른 설정까지 번거롭게 변경할 때 마다 모든 작업자들끼리 동기화하는 게 여.. Back-End/Spring 자료실 2023. 6. 20. NginX 설정 : 리버스 프록시 + Https(SSL) 적용하기 AWS EC2 우분투 서버에서 스프링 부트 서버를 가동하고 있습니다. $ nohup java -jar -Djasypt.encryptor.password=암호화키 ./서버애플리케이션.jar & NginX 설정에선 이미 Https (SSL) 설정을 마친 상태인데요. Https 설정을 적용한 채로 스프링 부트 서버에 접속하기 위해선, 리버스 프록시 설정을 추가해야 합니다. 리버스 프록시는 NginX 에 요청이 들어오면, 다른 서버에 연결을 토스해주는 기능을 해줍니다. 사용자는 실제 서버의 정체를 모르고도 통신을 할 수 있게 되는데요. NginX 에선 다음과 같이 설정했습니다. $ vi /etc/nginx/sites-available/default NginX 설정 편집기에 들어가 아래와 같이 작성합니다. ..... Back-End/Back-End 자료실 2023. 6. 20. [NVM 오류] M1 Mac 에서 clang: error: no such file or directory: 'CXX=c++' 오류 해결하기 M1 Mac 에서 nvm 으로 노드 12 버전을 설치해야할 일이 있어서 nvm install 12.14.1 명령어를 실행했습니다. 그런데, 아래와 같이 노드 12 버전이 실패가 되었다고 떴습니다..! clang: error: no such file or directory: 'CXX=c++' make[1]: *** [/Users/gimseonjae/.nvm/.cache/src/node-v12.22.9/files/out/Release/obj.target/openssl/deps/openssl/openssl/ssl/bio_ssl.o] Error 1 make[1]: *** Waiting for unfinished jobs.... clang: error: no such file or directory: 'CXX=c.. Back-End/NodeJS 자료실 2022. 1. 23. Backend Interview Q1. 프로세스와 스레드의 차이 안녕하세요. 다람쥐입니다.자바 백엔드 면접을 준비하면서 관련 질문들을 정리해보려고 합니다.지금은 머릿 속에 이곳 저곳 흩어져 있기에, 기술 면접 질문 위주로 차근차근 정리하려고 합니다!여력이 된다면, 중간에 인성 면접도 넣어볼 예정입니다. 꼬리 질문도 되는대로 추가할 예정이니 많은 관심 부탁드립니다. A : 다람쥐님, 프로세스와 스레드는 각각 무엇이고 어떤 차이점이 있을까요?프로세스는 실행 중인 하나의 애플리케이션입니다.운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행합니다.필요한 메모리 영역은 프로그램의 코드를 저장하는 Text 영역, 전역 정적 변수들을 저장하는 Data, 지역 변수들을 저장할 Stack, 동적 메모리 할당을 받을 Heap 영역입니다. 운영체제에서 각 프로그램들.. Back-End/Back-End 자료실 2020. 8. 25. [Java 웹개발 마스터] #3. REST API 개발 안녕하세요. 패스트캠퍼스 Java 웹 개발 수강생입니다.세 번째로 Rest API 를 개발을 해봤는데요. REST API 강의를 들으면서 새로 알게된 점들을 정리해보려 합니다. 스프링 테스트 클래스를 설정하는 법을 정리해봤다.스프링을 이용한 테스트는 @RunWith(SpringRunner.class) 어노테이션을 테스트 클래스에 붙인다.@WebMvcTest(RestaurantController.class) 어노테이션으로 어떤 컨트롤러를 테스트한다고 명시해줄 수 있다. 필드로 MockMvc 객체를 만들어 @Autowired 로 스프링으로부터 주입받는다.12345public void list() throws Exception {mvc.perform(get("/restaurants")) .andExpect(s.. Back-End/Spring 자료실 2020. 8. 10. [Java 웹개발 마스터] #2. 테스트 주도 개발 안녕하세요, 패스트캠퍼스에서 Java 웹개발 마스터 수강생입니다!첫 번째 스프링 부트 프로젝트 파트에서 배운 테스트 주도 개발을 정리해보려고 합니다. 본격적으로 레스토랑 예약 사이트의 Rest API를 만들기 전에 테스트 주도 개발이 무엇인지 배웠다.테스트 주도 개발(TDD, Test Driven Development)은 테스트 코드를 가장 먼저 만들어서 올바르게 작동하는 코드를 만들어내는 개발 방법 중 하나다. TDD를 진행하는 사이클이 있는데, 바로 Red, Green, Refactoring 단계의 사이클로 이루어져 있다. Red (테스트 실패) : 테스트 코드를 먼저 작성한다. 무조건 실패하는 테스트 코드를 작성한다.Green (테스트 통과) : 모든 테스트가 통과할 수 있도록 코드를 변경한다.Re.. Back-End/Spring 자료실 2020. 8. 8. [Java 웹개발 마스터] #1. 스프링 부트 프로젝트 시작 이번에 동아리에서 스프링 부트로 토이 프로젝트를 진행하게 되었는데요.스프링은 물론 스프링 부트 지식이 부족하다보니 강의를 참고하면 어떨까 싶었는데요.이전에 온라인 강의를 완강하며 느낀 점이 실무자 강사님들의 실전 팁들이 굉장히 마음에 들었습니다.마침 자바 웹 개발 강의도 있어서 이번에도 패스트 캠퍼스 강의를 선택했습니다! 저번 패스트 캠퍼스 관련 포스팅들은 관계자 분들과 협의 하에 강의 내용을 올려도 됐었는데,이번에는 그대로 강의 내용들을 정리하기 보다는 알게 된 점들을 대략적으로 정리하고보충이 필요하다면 따로 정리를 하는 식으로 해보려고 합니다! 자바 파트는 천천히 듣기로 하고 먼저 스프링 강의로 넘어갔습니다..! (언젠가 듣겠습니다..)강의 방식은 직접 예제 프로젝트를 강사님과 같이 만들어 보면서 진.. Back-End/Spring 자료실 2020. 8. 3. [Laravel] MySQL 8.0 이상 인증 오류 해결 PHP Laravel 프레임워크 기능을 익혀가던 중 난관에 부딪혔다. 며칠째 해결이 되지 않아서 잠깐 던졌었는데, 오늘에서야 해결했다. 문제 상황은 Laravel 프레임워크에서의 MySQL 접속 오류다.Laravel 이 제공하는 REPL(Read-Evaluate-Print-Loop) 도구인, tinker 를 이용하여 MySQL 8.0.12 계정에 접속하였다. 그러더니 다음과 같은 오류가 발생했다. ~/Documents/Workspace/PHP/myapp2 > php artisan tinkerPsy Shell v0.9.8 (PHP 7.1.16 — cli) by Justin Hileman>>> DB::select("SELECT * from posts");Illuminate/Database/QueryExcep.. Back-End/Back-End 자료실 2018. 9. 25. [Ruby On Rails] pg Gem 설치 오류 해결하기 [Ruby On Rails] pg Gem 설치 오류 해결하기Mac OS X 환경으로 설명하겠습니다. $ gem install pg Fetching: pg-1.0.0.gem (100%)ERROR: While executing gem ... (Errno::EACCES) Permission denied @ rb_sysopen - /Users/Chipmunk/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/pg-1.0.0/.gemtest Permission 접근이 금지되었다고 나옵니다. sudo 로 권한을 줘 봅시다. $ sudo gem install pgPassword:Building native extensions. This could take a while...ERROR.. Back-End/Back-End 자료실 2018. 5. 21. REST API: PUT & PATCH REST API: PUT & PATCH{ "username": "chipmunk", "email": "chipmunk@domain.com"}위 문서 데이터를 POST 메소드로 /users 으로 보낸다. 다음과 같은 개체가 나온다. ## /users/1{ "username": "chipmunk", "email": "chipmunk@domain.com"} 다음 PUT 과 PATCH 메소드를 살펴보자. PUT /users/1 { "username": "chipmunk", "email": "chipmunk@domain.com" // new email address}PATCH /users/1 { "email": "chipmunk@domain.com" // new email address} 위 두 요청은 동일하다... Back-End/Back-End 자료실 2018. 5. 8. 이전 1 2 다음