Java를 활용한 파일 검사 및 접근 불가능한 파일 스캔 방법
·
프로젝트/백신데스크톱
1. 기본적인 파일 검색 로직 (레거시 방식)가장 간단한 방법은 File.listFiles()를 사용하여 파일을 검색하는 것입니다. 하지만, 이 방식은 접근 권한이 없는 파일이나 시스템 파일을 검색할 때 오류가 발생할 수 있습니다.private static void scanFiles(File directory) { File[] files = directory.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { scanFiles(file); // 하위 폴더 탐색 } else { if (fil..
[쓸모있는 보안 지식] 3. OT 보안
·
보안/백신 프로그램
[쓸모있는 보안 지식] Q&A로 알아보는 OT 보안안랩 V3 교육 자료 - https://youtu.be/KGU7L5y3-mk?si=j5qvmFSyOfeQSjSH1. OT 보안이란?OT(Operational Technology, 운영 기술) 보안은 공장, 발전소, 교통 시스템 등 산업 환경에서 사용하는 제어 시스템(ICS, SCADA 등)을 보호하는 보안 기술을 의미합니다. IT 보안과 달리 OT 보안은 가용성(Availability)과 연속성(Continuity)이 핵심이므로, 별도의 보안 접근 방식이 필요합니다.2. Q&A로 알아보는 OT 보안Q1. OT 환경에서 보안 위협은 무엇이 있나요?✅ 랜섬웨어 공격: OT 시스템이 감염되면 생산 공정이 중단되거나 운영에 큰 차질 발생✅ 제어 시스템 해킹: 해..
[쓸모있는 보안 지식] 2. 클라우드 보안
·
보안/백신 프로그램
[쓸모있는 보안 지식] Q&A로 알아보는 클라우드 보안안랩 V3 교육 자료 - https://youtu.be/uxPdUd5kTjw?si=kjsYXB_zDnjPk6BJ1. 클라우드 보안이란?클라우드 보안은 클라우드 환경에서 데이터, 애플리케이션, 인프라를 보호하기 위한 보안 정책과 기술을 의미합니다. 기업들이 클라우드를 적극 활용하면서 보안 위협도 증가하고 있어, 철저한 보안 관리가 필수적입니다.2. Q&A로 알아보는 클라우드 보안Q1. 클라우드 환경에서 보안 위협은 무엇이 있나요?✅ 데이터 유출: 잘못된 접근 제어 설정이나 취약한 인증 방식으로 인해 중요 데이터가 외부로 유출될 수 있음✅ 계정 탈취: 클라우드 서비스 계정이 피싱 공격이나 취약한 비밀번호로 인해 해킹될 가능성 존재✅ 서비스 거부 공격(DD..
[쓸모있는 보안 지식] 1. 랜섬웨어
·
보안/백신 프로그램
랜섬웨어 공격 대응 방안안랩 V3 교육 자료 - https://youtu.be/ftPwQNdNFV4?si=CC_k3sW9-QHrbYUb1. 랜섬웨어란?랜섬웨어(Ransomware)는 악성 코드의 한 종류로, 감염된 시스템의 파일을 암호화한 후 금전을 요구하는 사이버 공격입니다. 최근 기업 및 기관을 대상으로 한 공격이 증가하고 있으며, 대응이 어려운 경우 심각한 피해를 초래할 수 있습니다.2. 랜섬웨어 감염 경로랜섬웨어는 다양한 방법으로 전파됩니다. 주요 감염 경로는 다음과 같습니다.악성 이메일 첨부파일: 피싱 이메일을 통해 악성 파일을 실행하도록 유도악성 링크 클릭: 신뢰할 수 없는 사이트나 이메일 내 링크 클릭 시 감염소프트웨어 취약점 악용: 운영체제 및 응용 프로그램의 보안 취약점을 이용한 공격US..
Java 제네릭 와일드카드에 대하여
·
Java
Java 제네릭 와일드카드에 대하여Java 제네릭(Generic)은 코드의 재사용성을 높이고, 타입 안전성을 보장하며, 런타임 시 타입 캐스팅을 줄이기 위해 도입된 기능입니다. 제네릭은 컬렉션이나 메서드에 타입을 정의할 수 있는 강력한 기능을 제공하지만, 때로는 제네릭 타입을 유연하게 다루어야 하는 경우가 생깁니다. 이러한 상황에서 사용되는 것이 바로 와일드카드(Wildcard) 입니다.이 글에서는 Java 제네릭 와일드카드의 개념, 종류, 사용법, 그리고 장단점에 대해 자세히 살펴보겠습니다.1. 제네릭 와일드카드란?와일드카드는 ? 기호로 표현되며, 제네릭 타입의 상한 또는 하한을 정의하거나 제네릭 타입을 보다 유연하게 다룰 수 있도록 설계되었습니다.와일드카드는 크게 세 가지로 나뉩니다:Unbounded..
스프링 부트 Test(어노테이션)
·
Spring
1. @SpringBootTest개요설명: 스프링 컨텍스트 전체를 로드하여 통합 테스트(Integration Test)를 수행합니다. 주로 애플리케이션의 전반적인 동작을 검증할 때 사용됩니다.특징:모든 빈(bean)을 로드하므로 실행 속도가 느릴 수 있습니다.webEnvironment 속성을 통해 테스트 환경을 설정할 수 있습니다.코드 예제@SpringBootTestclass ApplicationTests { @Test void contextLoads() { // 스프링 컨텍스트가 정상적으로 로드되는지 확인 }}webEnvironment 옵션WebEnvironment.NONE: 웹 환경 없이 테스트 실행.WebEnvironment.MOCK: MockServletContext를..
스프링 부트 3의 특징(이전 버전과 비교)
·
Spring
스프링 부트 3과 그 이전 버전 차이점 정리스프링 부트 3(Spring Boot 3)은 자바 17 이상을 필수로 요구하며, 성능 개선과 최신 자바 기능들을 활용할 수 있도록 설계된 점이 특징입니다. 이번 글에서는 스프링 부트 3과 이전 버전의 차이를 알아보며, 자바 최신 기능들(formatted() 메소드, 텍스트 블록, 레코드, 패턴 매칭, 자료형에 맞는 switch case 처리)과 스프링의 javax와 jakarta 전환에 대해 살펴보겠습니다.1. formatted() 메소드formatted() 메소드는 기존의 String.format() 메소드의 간결한 대안으로, 문자열 포맷팅을 보다 쉽게 수행할 수 있습니다.코드 예시기존 방식 (String.format)String name = "홍길동";int..
지연로딩,AOP,Mockito에 대하여
·
Spring
지연 로딩과 영속성 전이는 JPA에서 엔티티의 데이터 조회 및 관계 관리를 효율적으로 처리하기 위해 제공하는 기능입니다. 각 개념에 대해 자세히 설명하겠습니다.1. 지연 로딩 (Lazy Loading)지연 로딩은 엔티티가 데이터베이스에서 실제로 필요한 시점까지 관련 데이터를 불러오지 않고, 요청이 발생할 때 데이터를 가져오는 방식입니다. 지연 로딩은 JPA에서 @OneToMany, @ManyToMany 등의 관계 설정에서 기본적으로 사용되며, 필요할 때만 데이터를 가져오므로 성능 최적화에 유리합니다.특징: 실제로 엔티티를 사용할 때까지 데이터베이스 조회를 미루고, 조회 시점에 데이터를 가져옵니다.예제: Order 엔티티가 여러 개의 OrderItem 엔티티와 @OneToMany 관계로 설정된 경우, Or..
entity 연관관계
·
Spring
엔티티 간의 연관관계는 데이터베이스 테이블 간의 관계를 객체 지향 프로그래밍에서 표현하는 방법입니다. Spring Data JPA에서 엔티티 간의 연관관계를 설정하면, 데이터베이스 테이블 간의 관계를 객체 사이에서도 연결할 수 있습니다.대표적인 연관관계 종류는 1:1 (일대일), 1:N (일대다), N:1 (다대일), N:M (다대다) 관계가 있습니다. 각 관계는 @OneToOne, @OneToMany, @ManyToOne, @ManyToMany 같은 어노테이션을 통해 설정합니다.1. 일대일 (1:1) 관계설명: 한 엔티티가 다른 엔티티와 정확히 하나의 연관을 가질 때 사용됩니다.예시: 한 사용자(User)가 한 개의 프로필(Profile)을 가지는 경우.@Entitypublic class User { ..
@Validation에 대하여
·
Spring
@Validation 이란?@Validation은 일반적으로 데이터 유효성 검사를 위해 사용되는 어노테이션들을 의미하며, Spring Boot 및 Java 애플리케이션에서 입력값의 유효성을 보장하기 위해 사용됩니다. javax.validation이나 jakarta.validation 패키지에서 제공하는 어노테이션과 함께 사용됩니다.다음은 주요 유효성 검사 어노테이션들과 그 역할입니다:@NotNull: 필드가 null이 아닌지 확인합니다. null 값이 입력될 경우 유효성 검사를 통과하지 못합니다.@NotEmpty: 필드가 빈 문자열이 아닌지 확인합니다. null을 허용하지 않고, 최소한 하나 이상의 문자가 있어야 합니다.@NotBlank: 공백 문자열을 포함하여 null이나 빈 문자열이 아닌지 확인합니다..