전체 글 120

[ 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(..

[Intelli J] 디버깅이 안될 때

인텔레제이를 사용하다가 디버깅모드가 실행이 안될 때가 있다좌측 하단에 보면 이런 아이가 뜰것인데   Method breakpoints may dramatically slow down debugging 메서드 브레이포인트로 인해서 디버깅이 드라마틱하게 느려질 수 있다,,   그렇다,, 브레이크포인트가 너무나 많아서 그런것임  해결방법 :    좌측에 빨간 동그라미를 클릭해본다     찍혀있는 무수하게 많은 브레이크 포인트들이 나올것임 다 지워주면된다   평화롭게 해-결 찡!긋

[ Spring boot ] BCryptPasswordEncoder BCrypt 복호화

비밀번호 같은 중요한 정보는 DB에 저장할 때 입력받은 값 그대로 저장하면 안됨  암호화 방식에는 단방향 / 양방향 이 있는데 아주 간단하게만 얘기해볼겡 단방향 암호화는 암호화는 할 수 있지만, 복호화하여 원본 비밀번호를 알 수 없다.양방향 암호화는 암호화하고, 복호화하면 원본 비밀번호를 알 수 있다.  이런것임.   지금 쓰게될  Spring Security의 BCryptPasswordEncoder 사용하는 BCrypt 방식은  회원가입의 경우를 예시로 들면회원가입을 할 때 사용자가 입력한 원본 비밀번호와랜덤으로 생성된 솔트를 결합해 생성된 해시 값이 DB에 들어가는것임! salt는 매번 랜덤하게 생성되기 때문에 동일한 비밀번호도 매번 다른 해시 값을 생성함. 그래서 해시값으로 복호화해서 원본 비밀번호..

[ Docker ] 배포하기

https://dev-emma-dev.tistory.com/238 [Docker] Java 애플리케이션 Docker Container에서 실행하기build한 jar파일을Dockerfile을 이용해 Docker Container에서 실행하는 부분에 대해서 적어볼게요 = 이미지를 만든다 임       1. JAR 파일을 빌드프로젝트를 빌드해 jar파일을 만든다 ./gradlew build  buildev-emma-dev.tistory.com  이어지는 글,, 프로젝트 빌드하기./gradlew build gradle 설정 바꾼 후 재빌드 ./gradlew clean build --refresh-dependencies    이미지 빌드하기docker build -t {이미지이름:버전} {dockefile경로} ..

Chapter01/Docker 2024.10.16