본문 바로가기

전체 글

(47)
CSRF(Cross-Site Request Forgery) CSRF 란 사이트 간 요청 위조(Cross-site request forgery, CSRF)는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 의미한다.  CSRF 공격 시나리오  1. 사용자는 정상적으로 웹 애플리케이션에 로그인  - 로그인 과정에서 서버는 사용자의 세션 정보를 쿠키에 저장  - 이 쿠키는 세션 ID를 포함하고 있으며, 사용자가 로그인 상태를 유지하도록 함 2. 공격자는 사용자를 피싱 이메일이나 메시지를 통해 악성 링크를 클릭하도록 유도  - 피싱 이메일은 긴급한 보안 문제나 계정 확인을 빌미로 사용자를 속임  3. 패스워드 변경 요청   - 사용자가 악성 링크를 클릭하면 브라우저는..
XSS(Cross-Site Scripting) XSS 란 XSS 공격은 웹 서비스에 Javascript 등 스크립트를 실행할 수 있는 코드를 삽입하여 다른 사용자 등에게 공격자가 의도한 스크립트를 실행하게 하는 공격 방법이다. 참고로 Cross-Site Scripting의 약자는 CSS가 맞지만 CSS(Cascading Style Sheets)는 웹사이트에 표현되는 방법을 정해주는 스타일 시트 언어로 사용되기 때문에 XSS로 불리게 되었다.  XSS 공격 유형 1. Reflected XSS (반사형 XSS)Reflected XSS는 공격자가 악성 스크립트를 포함한 URL을 만들어서 사용자가 이를 클릭하도록 유도하는 공격 방식이다. 공격자의 악성 스크립트가 데이터베이스와 같은 저장소에 별도로 저장되지 않고 사용자의 브라우저에서 즉시 실행되면서 피해가 ..
CORS(Cross Origin Resource Sharing) CORS 란 CORS(Cross Origin Resource Sharing)를 직역하면 “교차 출처 리소스 공유” 정도로 번역될 수 있다. 다시 말해 CORS는 출처가 다른 서버간의 리소스 공유 정책이라고 할 수 있다. 웹 브라우저는 기본적으로 동일 출처 정책(SOP : Same-Origin Policy)을 따르기 때문에 같은 출처에서만 리소스를 공유할 수 있다. Origin(출처) 이란 그럼 CORS에서 말하는 출처는 어떤 것을 의미할까?  CORS에서 말하는 출처란 Protocol과 Domain(Host Name), Port로 이 중 하나라도 다르면 CORS 에러가 발생한다. CORS 정책이 등장한 이유 출처가 다른 두 개의 애플리케이션이 마음대로 소통할 수 있는 환경은 매우 위험하기 때문이다.특히 ..
DB Lock 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다. https://jaystorage.tistory.com/29 Transaction의 Isolation Level이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다.https://jaystorage.tistory.com/28 DB TransactionTransaction 이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행jaystorage.tistory.com  DB Lock 이란? DB Lock이란 데이터베이스에서 동시성과 데이터 일관성을 보장하기 위해 사용되는 메커니즘을 의미한다. 이러한 DB Lock은 여러 트랜잭션이 동시에 데이터에 접근하더라도 데이터가 손상되거나 일관성이 깨지지 않도록 만들어준다.  참..
Transaction의 Isolation Level 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다.https://jaystorage.tistory.com/28 DB TransactionTransaction 이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션의 특jaystorage.tistory.com  Isolation Level 이란? 트랜잭션의 격리 수준(Isolation Level)이란 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터에 접근할 수 있게 허용할지 여부를 결정하는 것을 의미한다.  이러한 Isolation Level 등장하게 된 이유는 다음과 같다. 트랜잭션의 ..
DB Transaction Transaction 이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션의 특징1) 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다.2) 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다.3) 하나의 트랜잭션은 Commit되거나 Rollback된다.   Transaction의 성질 트랜잭션은 ACID 원칙이라고 하는 성질을 가져야 한다.Atomicity(원자성)- 트랜잭션은 전부 수행되거나 전혀 수행되지 않아야 한다.Consistency(일관성)- 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해..
@Transactional 동작 방식 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다.https://jaystorage.tistory.com/25 AOP와 Spring AOPAOP (Aspect Oriented Programming)란 AOP는 관점 지향 프로그래밍을 의미한다. 처음 이 단어를 접하면 객체지향(OOP), 절차지향(PP)과 완전히 다른 새로운 개념인지 의문이 들 수 있으나 AOP는 기본적으로 OOPjaystorage.tistory.com  @Transactional 이란? @Transactional 어노테이션은 Spring에서 제공하는 어노테이션으로 메소드나 클래스에 적용하여 트랜잭션 경계를 지정할 수 있게 만든다. @Transactional 어노테이션을 사용하면 해당 메소드나 클래스의 메소드 실행이 트랜잭션 경계..
JDK Dynamic Proxy vs CGLIB Proxy 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다.  https://jaystorage.tistory.com/25 AOP와 Spring AOPAOP (Aspect Oriented Programming)란 AOP는 관점 지향 프로그래밍을 의미한다. 처음 이 단어를 접하면 객체지향(OOP), 절차지향(PP)과 완전히 다른 새로운 개념인지 의문이 들 수 있으나 AOP는 기본적으로 OOPjaystorage.tistory.com Proxy 패턴 프록시 패턴은 대상 원본 객체를 대리하여 대신 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴이다. 프록시(Proxy)의 사전적인 의미는 '대리인'이라는 뜻이다. 즉, 누군가에게 어떤 일을 대신 시키는 것을 의미하는데, 이를 객체 지향 프로그래밍에 접목해보면..