Computing and DB 🖥/Database5 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. DB LOCK 에 대해서 알아보자 "여러 사용자 / 프로세스가 동시에 DB 에 접근하고 변경할 수 있다면??" 데이터의 일관성과 무결성이 보장되지 않을 것이다 이를 방지하기 위해 등장한 개념 데이터베이스 락 (Database Lock) 동시에 여러 사용자 혹은 프로세스가 DB 에 접근할 때 데이터의 일관성과 무결성을 유지하기 위해 데이터의 동시 수정을 제어하여 충돌을 방지하는 메커니즘 락의 주요 종류 공유 락(Shared Lock) 여러 트랜잭션이 동시에 데이터를 읽는 것을 허용한다 하지만 공유 락이 걸린 데이터를 다른 트랜잭션이 수정하는 것은 불가하다 주로 읽기 작업에 사용되며 여러 트랜잭션이 동시에 해당 데이터를 읽을 때 유용하다 트랜잭션 A 와 B 가 동일한 데이터에 접근하여 읽으려고 할 때 두 트랜잭션 모두 공유 락을 획득할 수 .. 2024. 1. 23. NoSql 이 뭐야? 대용량 데이터와 실시간 데이터 처리의 중요성으로 인하여DB의 역할이 현대 어플리케이션에서 점점 더 중요해지고 있습니다전통적인 관계형 DB는 오랜 기간 동안 안정적인 데이터 관리 솔루션을 제공했지만,최근의 데이터 처리 요구사항을 충족시키기에는 몇 가지 한계가 분명히 존재합니다이러한 한계를 극복하고자 등장한 것이 바로 NoSQL입니다 NoSQL이란?"Not Only SQL"의 약자로 전통적인 관계형 DB 외의 다양한 데이터 저장 방식을 의미유연한 스키마, 수평적 확장성, 다양한 데이터 모델 지원 등 다양한 특징을 가지고 있다 특징SQL (관계형)NoSQL (비관계형)데이터 모델테이블 기반의 관계형 모델키-캆, 도큐먼트, 컬럼 패밀리, 그래프, etc스케일링주로 수직적 확장주로 수평적 확장스키마고정된 스키마.. 2023. 12. 12. 대용량을 대비한 DB... 어떻게 설정해? (feat.PostgreSQL) 어딜 가나 강조되는 DB... 그치만 실무를 경험하지 못한 입장으로서 보통 어느 부분을 신경 써야 하는지 도통 감이 잡히지 않는다 오늘은 변칙적이지 않고 정해진 카테고리 내에서 각각 필드가 정해질 경우 고려해 볼 만한 사항에 대하여 이야기해 보겠다 예시로 임의로 작성된 로그 테이블을 살펴보자 여기서 category 칼럼을 살펴보자 현재 post 와 login 두 가지의 카테고리만 존재하는 것으로 보이고, 이들이 반복된다 지금은 최대 5의 char을 허용하고 단순 post 와 login 두 개지만 더 긴 글자수를 허용하고 두 개가 아닌 100개 1,000개 10,000개 혹은 그 이상의 카테고리가 있다면? 당연히 쿼리문의 성능은 저하될 것이다 그렇다면 어떠한 방안이 있을까? 예시로 변경된 로그 테이블을 살.. 2023. 11. 14. 이전 1 다음 728x90 반응형