본문 바로가기

Computing and DB 🖥11

SQL Injection SQL Injection 악의적인 SQL 코드가 DB Query 에 삽입되어 논리가 변경되고 이에 따라 민감한 정보가 추출되거나 데이터가 수정 및 삭제가 되는 상황 SQL Injection 예시 input: ' OR '1'='1 original query: SELECT * FROM users WHERE username = 'value' AND password = 'value'; injected query: SELECT * FROM users WHERE username = '' OR '1'='1' AND password = 'value'; 공격자는 ' OR '1' = '1' 구문을 사용하여 원래의 조건과 별개로 항상 참인 조건('1' = '1' 은 항상 참인 조건)을 추가했으므로 원래 Query 의 목적인.. 2024. 2. 2.
[JDBC] - PreparedStatement Prepared Statement 란? SQL Query 를 실행하기 전에 미리 컴파일하고 실행 시에만 파라미터를 전달하는 방식의 SQL 문 성능 향상 처음 실행될 때 DB 에 의해 컴파일되고 서버 측에 캐싱하여 같은 Query 가 재사용될 때 재컴파일 하지 않고 이미 컴파일된 Query 를 재활용하므로 반복된 Query 실행 시 컴파일 시간이 단축된다 SQL Injection 방지 파라미터를 '?' 로 표시하고 실행 시점에 값을 바인딩하는 특성상 문자열의 일부로 해석되지 않고 별도의 값으로 처리되기에 사용자의 입력이 쿼리의 논리를 변경할 수 없으므로 SQL Injection 을 차단하는데 효과적이다 입력 데이터의 자동 변환 지정된 데이터 타입에 따라 자동으로 입력값을 변환하는 특성을 가지고 있다 예시로.. 2024. 1. 31.
[디자인 패턴] 싱글톤 제 2장 - "싱글톤의 심화과정" 지난 시간에는 싱글톤의 개념과 기본적인 구현 방법 멀티 쓰레드 환경에서 thread - safe 하게 구현하기 그리고 이른 초기화에 대해서 알아보았습니다 (지난 챕터, 싱글톤 제 1장 보러 가기) 이번 시간에는 JAVA 에서 권장하는 방법들과 더불어 1 장에서 다뤘던 개념들의 단점들을 보완하기 위해 나온 방안들을 살펴보겠습니다 Double Checked Locking 멀티 쓰레드 환경에서 이른 초기화처럼 객체를 미리 생성하지 않으면서 synchronized 의 성능 이슈 또한 사전에 방지할 수 있는 기법입니다 Double Checked Locking public class GlobalSettings { private static volatile GlobalSettings instance; private .. 2024. 1. 25.
[디자인 패턴] 싱글톤 제 1장 - "개념 및 멀티 쓰레드와 이른 초기화" 전역으로 공통되어야 하는 데이터가 담긴 인스턴스를 여러 개 생성한다면? 예를 들어 GlobalSettings 라는 클래스가 존재하고 PersonalSettings 에서 GlobalSettings 의 인스턴스를 여러 개 사용한다면 인스턴스의 일관성을 보장할 수 없고, 자원 낭비, 동기화 문제 등 여러 문제가 발생합니다 (GlobalSettings 는 글로벌 세팅으로 각 객체의 독립성이 요구되지 않는다는 가정) 문제가 되는 상황 예시 public class PersonalSettings { GlobalSettings gloSetOne = new GlobalSettings(); GlobalSettings gloSetTwo = new GlobalSettings(); boolean equalCheck = (glo.. 2024. 1. 24.
DB LOCK 에 대해서 알아보자 "여러 사용자 / 프로세스가 동시에 DB 에 접근하고 변경할 수 있다면??" 데이터의 일관성과 무결성이 보장되지 않을 것이다 이를 방지하기 위해 등장한 개념 데이터베이스 락 (Database Lock) 동시에 여러 사용자 혹은 프로세스가 DB 에 접근할 때 데이터의 일관성과 무결성을 유지하기 위해 데이터의 동시 수정을 제어하여 충돌을 방지하는 메커니즘 락의 주요 종류 공유 락(Shared Lock) 여러 트랜잭션이 동시에 데이터를 읽는 것을 허용한다 하지만 공유 락이 걸린 데이터를 다른 트랜잭션이 수정하는 것은 불가하다 주로 읽기 작업에 사용되며 여러 트랜잭션이 동시에 해당 데이터를 읽을 때 유용하다 트랜잭션 A 와 B 가 동일한 데이터에 접근하여 읽으려고 할 때 두 트랜잭션 모두 공유 락을 획득할 수 .. 2024. 1. 23.
정적 콘텐츠(Static Content) & 동적 콘텐츠(Dynamic Content) 우리는 알게 모르게 웹서핑을 하면서 두 가지 형태의 콘텐츠를 이용하고 있다 모든 사용자에게 콘텐츠가 동일하게 부여되는 정적 콘텐츠(Static Content)와 사용자의 설정이나 선택사항에 따라 유동적으로 사용자 정보 기반의 맞춤 페이지가 부여되는 동적 콘텐츠(Dynamic Content) 정적 콘텐츠(Static Content)란? 서버에 미리 저장된 HTML, JS, CSS 등의 파일들을 그대로 응답으로 보내주는 것 따라서, 각기 다른 사용자들의 요청에 항상 동일한 결과를 반환한다 장점: 속도와 안정성, 보안에 용이 단점: 유연성 부족, 업데이트의 불편성 동적 콘텐츠(Dynamic Content)란? 누가, 무엇을, 어떻게 요청하는지에 따라 각각 다른 응답을 보내주는 것 따라서, 각기 다른 사용자들의.. 2024. 1. 12.
728x90
반응형