Chapter01/Sping boot 16

[ 2Factor 인증] Google Authenticator 인증 java코드

관리자 모드로 로그인 할 때 2차 인증을 하는 기능 추가가 필요했다 여러가지 방법이 있고,그 중Google Authenticator을 사용하기로함 후딱 끝날거라고 생각했는데 ㅋ삽질 엄청나게함구현한거랑 뭐땜에 글케 삽질했는지 적어보겠음 삽질 1. google QR코드 자동으로 생성해주는 API가 지원이 종료됐다는데 이걸 모르고내내 그 API를 쓰려고해서 QR이 안만들어졌다ㅠ 계속 이미지 에러가 떠서..여차저차 찾다보니 API지원이 끝난걸알았고구글링하면서 다른사람들이 qr생성하는 코드를 찾게되어서참고해서 만들어봄 package com.example.demo.controller;import com.example.demo.service.TotpService;import org.sp..

[ node ] npm 명령어

npm은 Node.js의 공식 패키지 매니저로, 자바스크립트 개발 환경에서 사용되는 다양한 패키지와 모듈을 관리하는 도구임  보통 프론트를 띄울때 프로젝트 루트 경로에서 ( package.json 파일이 있어야 어떤 패키지를 설치할 수 있는지 알 수 있기때문)npm install  을 한다    npm cache clean --force로컬 캐시 저장소를 정리하거나 삭제.동일한 패키지를 반복 설치 하는 경우 or 로컬 캐시가 너무 커져 디스크 공간을 차지할 경우에 사용 npm 5.0.0 버전부터는 캐시를 삭제할 때 명령어에 --force 플래그를 추가해함. 완료 후 npm cache verify 로 정적으로 정리되었는지 확인.  npm install --legacy-peer-deps의존성 충동 무시하고 설치

[ 보안 취약점 ] main() 메서드

최근에 마무리된 프로젝트에서취약점 분석 결과중  디버그 목적으로 포함된 main() 메소드 혹은 지정된 디버그 메소드 호출을 검출합니다. 실제로 배포할 프로그램의 진입로 역할을 할 main() 메소드가 하나 존재해야한다면 그 소속 클래스를 옵션으로 지정하여 검출에서 제외할 수 있습니다. 이런 피드백을 받았다.  => 디버그 목적으로 작성된 main() 메서드나 디버그 메서드를 식별하고, 실제 배포용 프로그램에서 불필요한 메서드를 제거해야 한다는 말임.    억울함,, 디버그 목적으로 메인메서드를 만들ㅇ지않았음ㅠ있어야되니까 만든것이기 때문이지,, ,, + ㅅㅏ실 내가 짠 코드가 아님그러나 고쳐야 하는 사람이 나라는 게,,중요할 ,,뿐,,    이런 진단을 받고 main()메서드에 관해서 내가 아는 것은 이..

[ Spring Boot ] J2EE와의 관계

1. Spring Boot 와 J2EE는 다르다Spring Boot는 Spring Framework를 기반으로 애플리케이션을 더 쉽게 개발할 수 있도록 도와주는 프레임워크입니다.J2EE(Java EE, 현재는 Jakarta EE)는 대규모 애플리케이션 개발을 위한 표준 규격입니다. 2. Spring Boot 와 J2EE의 관계Spring Boot 는 J2EE의 기술(서블릿, JPA 등)을 사용하면서, 더 간단하고 유연하게 개발하도록 만든 도구입니다.Spring Boot 는 J2EE를 기반으로 동작하지만, J2EE의 일부 기술을 대체하거나 확장합니다. 3. Spring Boot 가 J2EE를 사용하는 방법서블릿(Servlet)J2EE에서는 Servlet을 사용해 HTTP 요청/응답을 처리합니다.Spring..

[ Springboot ] final

취약점 진단을 받고 보완을하다가 mapper 필드를 final로 선언하고, 이미 생성자 주입을 통해 할당하고 있으므로 별도의 세션 간 데이터 누출 문제를 유발하지 않도록 private SettlementMapper settlementMapper;private ModelMapper mapper; 위와 같이 선언해둔 부분을private final SettlementMapper settlementMapper;private final ModelMapper mapper; 로 변경해야한다는 진단을 받았다.    final 키워드를 붙이면필드가 객체 생성 이후 변경되지 않는 ‘불변성’을 가지게 됨.이로써 코드 안정성과 명확성이 증가하고, 멀티스레드 환경에서 동시성 문제를 줄일 수 있다. 반면 final이 없으면 필드..

[ 보안 취약점 ] 부적절한 예외 처리 catch(Exception e)

우리 서비스에서 다른 웹페이지로 이동하는 기능이 있는데로그인 정보도 같이 가지고 넘어감.그래서 우리 서비스에서 비밀번호를 변경하면 타 서비스에 저장된 개인정보도 수정되어야함.그 때 쓰는 메서드의 일부.  private void updatePassword(User user,String userId, String password){ String usingService = (subscribeMapper.checkUserService(userId)).getId(); if (usingService != null) { try{ appleService.putPasswd(userId, user.getPassword(), usingService); ..

[ 보안 취약점 ] 적절하지 않은 난수 값 사용 Math.random()

첨부파일 업로드 / 다운로드 기능이있느데거기서 파일명 정할때 어쩌구 저쩌구 하면서 랜덤값을 생성해야하는 부분이 있음그 때 쓰이는 코드! public class GenerateRandomString { public static String generateString() { String AlphaNumericString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789" + "abcdefghijklmnopqrstuvxyz"; StringBuilder sb = new StringBuilder(10); for (int i = 0; i 위 코드에서 이런 취약점 분석 진단을 받았다. ..

[node] 노드 버전 여러 개 사용하기

nvm으로 원하는 버전 설치하기nvm install {설치할 노드 버전}  Downloading node.js version 16.20.2 (64-bit)... Extracting node and npm... Error extracting from Node archive: open C:\Program Files\nvm\nvm\v16.20.2\node-v16.20.2-win-x64\corepack.cmd: Access is denied. Could not download node.js v16.20.2 64-bit executable.등  Access is denied 식의 에러가 뜬다면 cmd를 관리자 권한으로 실행하면 됨     설치된 버전 리스트 확인하기nvm list     사용할 버전 지정하기nvm..

[ swagger ] Failed to load remote configuration.

간단하게 테스트해볼게있어서새로 프로젝트를 하나 파서후딱 외부 API 하나만 연동해올라고스웨거 설정을 하는디         @Configurationpublic class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .csrf().disable() .authorizeRequests() .antMatchers("/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html").permitAll() .anyRequest().authenticated(..