아래 글은 데이터베이스 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.

 

📃 참고자료

 

https://www.youtube.com/watch?v=Zshhj0yEenw&list=PLimVTOIIZt2aP6msQIw0011mfVP-oJGab&index=2 

 

 

 

 

 

 

* 데이터 모델이란?

 

- 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화 형태로 체계적으로 표현하기 위한 개념적 모형

- ERD와 같은 설계도가 하나의 모델이 된다.

- 데이터가 가공되면 정보가 된다.

- 데이터 모델링 혹은 정보 모델링이라고도 불린다.

 

 

 

 

 

* 데이터 모델의 3가지 구성 요소

 

  1.  구조(Structure)
    - 구조는 곧 스키마
  2.  연산(Operation)

  3.  제약조건(Constraint)
    - 구축된 데이터베이스 무결성 유지를 위해 계약조건을 건다.
      * 무결성은 정확성 혹은 정합성으로도 부린다.

    ex) 아무나 접근하지 못하도록 한다,
        특정 데이터 이외에는 입력하지 못하도록 제약을 건다.

 

 

 

 

* ERD(개체 관계도)

 

 

 

  • 위와 같은 것을 DA가 설계한다.
  • DA가 설계한 것을 DBA(Database Administration)가 DBMS(database management system)
    사용해 그대로 컴퓨터 데이터베이스에 설계

 

 

 

 

* 개체(Entity)

- 정확한 명칭은 개체타입(Entity Type)

 

ex) XX대 학생 한명은 인스턴스
     XX대 학생이라는 것은 개체 타입

 

 

 

 

* 엔티티 인스턴스(Entity Instance)

 

- 입력된 데이터 값 하나

 

 

 

 

 

학생 Entity Type(개체 타입)

학번 이름 학과 성별 지도교수

 

Entity Set(개체 집합)

00123 김태희 컴퓨터 김동훈
00124 전지현 영문 조세진
00125 저우성 정치 이영호

 

 

 

 

 

* 속성(Attribute)

 

단순 애트리뷰트 복합 애트리뷰트

  1. 단순 애트리뷰트(Simple Attribute)
    - 더 이상 분해 할 수 없는 속성
    ex) 이름, 직업, 나이 등
  2. 복합 애트리뷰트(Composit Attribute)
    - 단순 애트리뷰트로 분해 할 수 있는 속성
    - 쪼갤 수 없는 값이 좋은 값
    ex) 주소( 서울시 / 영등포구 / 영등포동 )



단일 값 속성 다중 값 속성

 

  1. 단일 값 속성(Single-Valued Attribute)
    ex) 이름, 나이 등

  2. 다중 값 속성(Multi-Valued Attribute)
    ex) 취미, 이상형 등

 

 

반응형

 

 

아래 글은 데이터베이스 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.

 

📃 참고자료

 

 

 

 

데이터베이스(DataBase)란?

 

  • 여러 사람이 공유하여 사용할 목적으로 체계화해 통합(Integrated), 관리하는 데이터 집합이다.
  • 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장(Stored)하여 운영(Operational)할 수 있는 공용 데이터(Data)들의 묶음이다.
  • 논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조화함으로써 검색과 갱신의 효율화
  • 몇 개의 자료 파일을 조직적으로 통합해 자료 항목의 중복을 없애고 자료를 구조화해 기억시켜 놓은 자료의 집합체
  • 데이터베이스는 일반적으로 데이터베이스 관리 시스템(DBMS)에 의해 제어
  • 연결된 애플리케이션과 함께 데이터와 DBMS를 하나로 묶어 데이터베이스 시스템이라고 하며 
    단축하여 데이터베이스라고도 합니다.

 

 

 

 

데이터베이스의 특징

 

  1. 실시간 접근성(Real-time Accessibility)
  2. 지속적인 변화(Continous Evolution)
  3. 동시 공유(Concurrent Sharing)
  4. 내용에 대한 참조(Contents Refference)
  5. 데이터 논리적 독립성

 

 

 

 

 

데이터베이스의 장단점

 

 

데이터베이스 장점

  1. 데이터 중복 최소화
  2. 데이터 공유
  3. 일관성, 무결성, 보안성 유지
  4. 최신의 데이터 유지
  5. 데이터의 표준화 가능
  6. 데이터의 논리적, 물리적 독립성
  7. 용이한 데이터 접근
  8. 데이터 저장 공간 절약

 

 

데이터베이스 단점

 

  1. 데이터베이스 전문가 필요
  2. 많은 비용 부담
  3. 데이터 백업과 복구가 어려움
  4. 시스템의 복잡함
  5. 대용량 디스크로 엑세스가 집중되면 과부하 발생

 

 

 

데이터베이스의 유형

 

  • 관계형 데이터베이스. 
    관계형 데이터베이스는 1980년대를 지배했습니다.
    관계형 데이터베이스의 항목은 열과 행이 있는 테이블 집합으로 구성됩니다.
    관계형 데이터베이스 기술은 정형 정보에 액세스하는 가장 효율적이고 유연한 방법을 제공합니다.

  • 객체 지향 데이터베이스. 
    객체 지향 데이터베이스의 정보는 객체 지향 프로그래밍과 마찬가지로 객체 형태로 표현됩니다.

  • 분산 데이터베이스. 
    분산 데이터베이스는 서로 다른 사이트에 위치한 둘 이상의 파일로 구성됩니다.
    데이터베이스는 물리적으로 동일한 위치에 있는 여러 컴퓨터에 저장되거나 다른 네트워크에 분산될 수 있습니다.

  • 데이터 웨어하우스. 
    데이터의 중앙 저장소인 데이터 웨어하우스는 빠른 쿼리 및 분석을 위해 특별히 설계된 데이터베이스 유형입니다.

  • NoSQL 데이터베이스. 
    NoSQL 또는 비관계형 데이터베이스를 사용하면 비정형 및 반정형 데이터를 저장하고 조작할 수 있습니다(반면에 관계형 데이터베이스에서는 데이터베이스에 삽입되는 모든 데이터의 구성 방식을 정의해야 함). 웹 애플리케이션이 보다 보편화되고 복잡해지면서 NoSQL 데이터베이스의 인기가 높아졌습니다.

  • 그래프 데이터베이스. 
    그래프 데이터베이스는 엔티티 및 엔티티 간의 관계 측면에서 데이터를 저장합니다.

  • OLTP 데이터베이스. 
    OLTP 데이터베이스는 여러 사용자가 수행하는 많은 수의 트랜잭션을 위해 설계된 고속 분석 데이터베이스입니다.

  • 문서/JSON 데이터베이스. 
    문서 지향 정보를 저장, 검색 및 관리하도록 설계된 문서 데이터베이스는 행과 열이 아닌 JSON 형식으로 데이터를 저장하는 현대적인 방법입니다.

  • 클라우드 데이터베이스. 
    클라우드 데이터베이스는 프라이빗, 퍼블릭 또는 하이브리드 클라우드 컴퓨팅 플랫폼에 상주하는 정형 또는 비정형 데이터 모음입니다. 클라우드 데이터베이스 모델의 유형은 전통적인 데이터베이스와 DBaaS(서비스형 데이터베이스) 등 두 가지가 있습니다. DBaaS에서는 서비스 제공자가 관리 작업과 유지 관리를 수행합니다.

 

 

* 데이터베이스 사용자

 

 

 

* 스키마(Schema)

 

- 데이터베이스의 구조나 제약조건 등을 구체화한 것

 

 

 

* 스키마의 종류

 

  • 개념 스키마(Conceptual Schema)
  • 외부 스키마(External Schema)(= 외부 뷰, 서브스키마)
  • 내부 스키마(Internal Schema)
반응형

 

 

아래 글은 SQL 인젝션 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.

 

 

 

📃 참고자료

 

 

 

 

 

SQL 인젝션(Injection)이란?

 

 

SQL 인젝션은 웹 사이트의 보안상 허점을 이용해 특정 SQL 쿼리 문을 전송하여 공격자가 원하는 데이터베이스의 중요한 정보를 가져오는 해킹 기법을 말한다. 대부분 클라이언트가 입력한 데이터를 제대로 필터링 하지 못하는 경우에 발생한다. 공격의 쉬운 난이도에 비해 피해가 상당하기 때문에 보안 위협 1순위로 불릴 만큼 중요한 기법이다.

 

 

 

 

 

대응방안

 

  • 입력 값에 대한 검증
    더보기
    SQL Injection 에서 사용되는 기법과 키워드는 엄청나게 많습니다. 사용자의 입력 값에 대한 검증이 필요한데요. 서버 단에서 화이트리스트 기반으로 검증해야 합니다. 블랙리스트 기반으로 검증하게 되면 수많은 차단리스트를 등록해야 하고, 하나라도 빠지면 공격에 성공하게 되기 때문입니다. 공백으로 치환하는 방법도 많이 쓰이는데, 이 방법도 취약한 방법입니다. 예를 들어 공격자가 SESELECTLECT 라고 입력 시 중간의 SELECT가 공백으로 치환이 되면 SELECT 라는 키워드가 완성되게 됩니다. 공백 대신 공격 키워드와는 의미 없는 단어로 치환되어야 합니다.

 

  • Prepared Statement 구문사용
    더보기
     Prepared Statement 구문을 사용하게 되면, 사용자의 입력 값이 데이터베이스의 파라미터로 들어가기 전에DBMS가 미리 컴파일 하여 실행하지 않고 대기합니다. 그 후 사용자의 입력 값을 문자열로 인식하게 하여 공격쿼리가 들어간다고 하더라도, 사용자의 입력은 이미 의미 없는 단순 문자열 이기 때문에 전체 쿼리문도 공격자의 의도대로 작동하지 않습니다.

 

  • Error Message 노출 금지
    더보기
    공격자가 SQL Injection을 수행하기 위해서는 데이터베이스의 정보(테이블명, 컬럼명 등)가 필요합니다. 데이터베이스 에러 발생 시 따로 처리를 해주지 않았다면, 에러가 발생한 쿼리문과 함께 에러에 관한 내용을 반환헤 줍니다. 여기서 테이블명 및 컬럼명 그리고 쿼리문이 노출이 될 수 있기 때문에, 데이터 베이스에 대한 오류발생 시 사용자에게 보여줄 수 있는 페이지를 제작 혹은 메시지박스를 띄우도록 하여야 합니다.

 

  • 웹 방화벽 사용
    더보기
    웹 공격 방어에 특화되어있는 웹 방화벽을 사용하는 것도 하나의 방법입니다. 웹 방화벽은 소프트웨어 형, 하드웨어 형, 프록시 형 이렇게 세가지 종류로 나눌 수 있는데 소프트웨어 형은 서버 내에 직접 설치하는 방법이고, 하드웨어 형은 네트워크 상에서 서버 앞 단에 직접 하드웨어 장비로 구성하는 것이며 마지막으로 프록시 형은 DNS 서버 주소를 웹 방화벽으로 바꾸고 서버로 가는 트래픽이 웹 방화벽을 먼저 거치도록 하는 방법입니다.

 

 

반응형

+ Recent posts