728x90
CS
Database - Key
1. Candidate Key(후보키)
- Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합.(기본키로 사용할 수 있는 속성들)
- 2가지 조건을 만족한다.
- 유일성 : key 하나로 tuple을 유일하게 식별할 수 있다.
- 최소성 : 꼭 필요한 속성으로만 구성한다.
2. Primary Key(기본키)
- 후보키 중 선택한 Main Key
- 특징
- Null 값을 가질 수 없다.
- 동일한 값이 중복될 수 없다.
3. Alternate Key(대체키)
- 후보키 중 기본키를 제외한 나머지 키 = 보조키
4. Super Key(슈퍼키)
- 유일성은 만족하지만, 최소성은 만족하지 못하는 키
5. Foreign Key(외래키)
- 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집
Database - Join
- 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법
- 테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다.
JOIN의 종류
- INNER JOIN
- 교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다.
- LEFT OUTER JOIN
- 기준 테이블 값과 조인테이블과 중복된 값을 보여준다.
- 왼쪽 테이블을 기준으로 join 한다.
- RIGHT OUTER JOIN
- LEFT OUTER JOIN과는 반대로 오른쪽 테이블을 기준으로 JOIN한다.
- FULL OUTER JOIN
- 합집합을 뜻한다.
- A와 B 테이블의 모든 데이터가 검색된다.
- CROSS JOIN
- 모든 경우의 수를 전부 표현해주는 방식이다.
- A가 3개, B가 4개면 3*4 = 12개의 데이터가 검색된다.
- SELF JOIN
- 자기자신과 자기자신을 join한다.
- 하나의 테이블을 여러번 복사해서 join한다.
- 자신이 갖고 있는 칼럼을 다양하게 변형시켜 활용할 때 자주 사용한다.
SQL Injection
- 해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법이다.
공격 방법
- 인증 우회
- 데이터 노출
방어 방법
- input 값을 받을 때, 특수문자 여부 검사하기
- 로그인 전, 검증 로직을 추가하여 미리 설정한 특수 문자들이 들어왔을 때 요청을 막아낸다.
- SQL 서버 오류 발생 시, 해당하는 에러 메시지 감추기
- view를 활용하여 원본 데이터베이스 테이블에는 접근 권한을 높인다. 일반 사용자는 view로만 접근하여 에러를 볼 수 없도록 만든다.
- preparestatement 사용하기
- preparestatement를 사용하면, 특수문자를 자동으로 escaping 해준다. 이를 활용해 서버 측에서 필터링 과정을 통해서 공격을 방어한다.
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.07.10 CS (0) | 2024.07.10 |
---|---|
24.07.09 CS (0) | 2024.07.09 |
24.07.05 CS (0) | 2024.07.05 |
24.07.04 합격,CS (0) | 2024.07.04 |
24.07.03 그래픽스, CS (0) | 2024.07.03 |