Chapter01/Sping boot 18

[ 보안 취약점 조치 ] Clickjacking 공격

보안 취약점 결과가 나왔는데클릭재킹 공격 항목에 걸렸다 Clickjacking 공격?? ???사용자가 웹사이트 화면을 보고 있다고 착각하게 만든 뒤,사실은 투명한 iframe 같은 곳에서 악성 페이지 클릭하게 유도하는 공격. (예를 들어외부 사이트가 우리 사이트 화면을 iframe에 몰래 띄우고,투명 버튼을 올려놔서 사용자가 본인도 모르게 그 투명 버튼을 클릭하게 유도함) 취약점 설명 이용자가 자신이 클릭하고 있다고 인지하는 것과 다르게 공격자가 의도하는 것을 이용자가 감춰진 링크를 클릭하게 속이는 악의적인 공격 방법이다. 잠재적으로 공 격자는 비밀 정보를 유출하거나 그들의 컴퓨터에 대한 제어를 획득할 수 있다. 양호기준외부 객체를 통해 해당 사이트가 참조되지 않는 경우 취약기준외부 객체를 통해..

[Spring boot ] Load balancer health Check

네니오지금 할게욥 build.gradle에 의존성 추가해주고 implementation 'org.springframework.boot:spring-boot-starter-actuator' application.yml도 작성management: server: base-path: /actuator endpoints: web: exposure: include: health, info endpoint: health: show-details: always 엄청 간단한게 안됐었던 이유는화이트 리스트에 넣는것을 깜빡했슴,, 첨에 실행할때 로컬에서도 잘 뜨구 컨테이너에 올렷을 때도 잘 뜬당 curl 날려서 확인해보..

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