Study/TIL(Today I Learned)

24.07.08 CS

에린_1 2024. 7. 8. 23:22
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 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법이다.

공격 방법

  1. 인증 우회
  2. 데이터 노출

방어 방법

  1. input 값을 받을 때, 특수문자 여부 검사하기
    • 로그인 전, 검증 로직을 추가하여 미리 설정한 특수 문자들이 들어왔을 때 요청을 막아낸다.
  2. SQL 서버 오류 발생 시, 해당하는 에러 메시지 감추기
    • view를 활용하여 원본 데이터베이스 테이블에는 접근 권한을 높인다. 일반 사용자는 view로만 접근하여 에러를 볼 수 없도록 만든다.
  3. 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