728x90

데이터 data

- 측정된 값

 

정보 information

- 의사 결정 할수 있는 지식

 

데이터베이스 database

- 데이터 집합

 

개체 entity

- 서로 구별될수 있는 정보

- 속성 attribute로 구성

- 파일 시스템의 레코드

ex) 개체 - 학생

    속성 - 학번, 이름, 학과 등

 

속성 attribute

- 정보의 가장 작은 단위

- 파일 시스템의 필드에 해당 

 

데이터베이스 관리 시스템 DBMS DataBase Management System

- DB 정의, 조작, 제어 기능 제공

- 데이터 정의 definition : 응용프로그램과 db가 인터페이스 제공, 다양한 데이터 요구 지원하도록 db 구조 정의

- 데이터 조작 manipulation : 사용자와 db간 인터페이스 제공, 데이터 검색, 삽입, 삭제, 수정 등 처리

- 데이터 제어 control : 권한 변경, 데이터 적용 복원 등 제공

 

스키마 schema

- DB 구조, 개체와 속성 관계를 포함하는 논리적 정의와 제약조건 기술한것

 

데이터 언어

- DDL : DB 관리자가 DB 스키마 정의(DB 구조 정의/변경)하기 위해 사용

 -> DB 스키마는 시스템 카탈로그나 데이터 디렉토리에 저장

- DML : DB 사용자와 DBMS 사이 통신수단. 검색, 삭제, 수정, 삽입 등 처리

- DCL : 데이터 제어 정의. DB 관리자가 데이터 보안/무결성/복구/병행 수행 제어 

* 일반 사용자 : SQL로 DB에 접근하는 사람

 

 

 

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

요구사항 2 - UML  (0) 2020.05.16
데이터베이스 2 - 데이터 모델링  (0) 2020.05.16
보안 점검 항목  (0) 2020.05.16
암호 알고리즘  (0) 2020.05.16
캡슐화, 코드 오류  (0) 2020.05.16
728x90

보안 점검 항목

- 소프트웨어 개발 보안 가이드

https://www.kisa.or.kr/synap/doc.html?fn=201911290959441585.pdf&rs=/synapfile/

300x250
728x90

암호 할고리즘

- 정보 보호를 위해 평문을 암호화.

- 해시를 이용한 단방향 암호화와 개인키, 공개키를 이용한 양방향 암호화

 

hash 해시

- 임의 길이의 데이터를 고정된 길이 값이나 키로 변환

- 해시 알고리즘을 해시 함수, 해시 함수로 변한된 값/키을 해시값/키

- sha, md5 등

 

private key encryption 개인키 암호화 방법

- 평문을 암호화 알고리즘과 개인 키로 암호화하여 암호문 만듬 해당 키와 복호화 알고리즘으로 평문으로 되돌림.

- 암호화/복호화가 빠르며 단순, 사용자가 많을수록 개인키가 많이 필요

- 블록 암호화 : DES, SEED, AES, 스트림 암호화 : RC4

- DES Data Encryption Standard : 1975년 발표. 64비트 크기 블록과 56비트 길이 키 사용.

- AES Advanced Encryption Standard : 2001년 발표. 블록 크기 128비트, 키 길이에 따라 128, 192, 256

 

public key encryption 공개키 암호화 방식

- 공개키로 데이터를 암호화, 비밀키로 암호화된 데이터를 평문으로 복호화

- 키 분배, 관리가 쉬움, 암호/복호화 속도가 느리며, 복잡.

- RSA

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

데이터베이스 1 - 데이터베이스 관리 시스템  (0) 2020.05.16
보안 점검 항목  (0) 2020.05.16
캡슐화, 코드 오류  (0) 2020.05.16
시간 및 상태, 에러 처리  (0) 2020.05.16
보안 약점  (0) 2020.05.16
728x90

캡슐화

- 정보 은닉이 필요한 데이터, 기능을 불충분하게 캡슐화하여 발생할수 있는 문제

- 잘못된 세션에 의한 정보 노출 : 멤버 변수에 정보 저장시 발생 -> 지역 변수로 변수 범위 제한

- 제거되지 않고 남은 디버그 코드 : 버그 수정이나 결과값 확인을 위해 남은 코드로 발생 -> 배포 전 디버그 코드 삭제

- 시스템 데이터 정보 노출 : 내부 정보를 메시지로 외부 노출 -> 노출 메시지 정보는 최소화

 

코드 오류

- 개발자들이 코딩 중 하기 쉬운 실수들로 형 변환, 자원 반환 등 

- 널 포인터 역참조 : 널 포인터가 가리키는 곳에 값을 저장하여 발생 -> 사용 전 널 값 확인

- 부적절 자원 해제 : 자원 반환을 누락하거나 반환 실패시 발생. 계속 자원 점유시 부족 -> 반환 코드 추가

- 해제된 자원 사용 : 이미 반환된 메모리 참조 -> 반환 후 접근 못하도록 주소 저장한 포인터 초기화

- 초기화 하지 않은 변수 사용 : 값이 없는 변수 사용시 발생 -> 변수 선언시 초기화

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

보안 점검 항목  (0) 2020.05.16
암호 알고리즘  (0) 2020.05.16
시간 및 상태, 에러 처리  (0) 2020.05.16
보안 약점  (0) 2020.05.16
개발 보안  (0) 2020.05.16
728x90

시간 및 상태

- 병렬 처리나 시스템이나 멀티 프로세싱 환경에서 시간 실행상태 관리하는 보안 검증 항목

 

toptou 경쟁  조건

- 검사 시점과 사용 시점을 고려없이 코딩시 발생하는 보안 약점

-> 검사 시점에 사용 가능한 자원이 사용 시점 사용 불가

 

종료되지 않는 반복문 이나 재귀함수

- 종료 조건을 정의하지 않거나 구조상 종료 안되는 경우 발생하는 보안 약점

-> 시스템이 자원 고갈로 정지

 

 

 

에러 처리

- 오류들을 사전에 정의하여 예방하는 보안 검증 항목

- 오류메세지를 통한 정보 노출 : 실행 환경, 디버깅 정보, 스택트레이스 등 메시지로 외부 노출하는 보안 약점

- 오류 상황 대응 부재 : 개발 중 예외처리 미비로 발생하는 보안 약점 -> 예외 처리 구현

- 부적절한 예외 처리 : 예외를 세분화하지 않거나 누락된 예외로 인한 보안약점 -> 세분화된 예외처리

* stack trace 스택 트레이스 : 오류가 발생한 위치 추적하는 호출 메소드 리스트

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

암호 알고리즘  (0) 2020.05.16
캡슐화, 코드 오류  (0) 2020.05.16
보안 약점  (0) 2020.05.16
개발 보안  (0) 2020.05.16
DML  (0) 2020.05.16
728x90

입력 데이터 검증 및 표현과 보안 약점

- 잘못된 입력 데이터로 문제 발생을 막기 위한 검증

- 위험한 파일 업로드 : 악의적 명령어 스크립트 파일을 업로드하여 시스템 손상

- 운영체제 명령어 삽입 : 시스템 명령어 실행 유도

- 크로스 사이트 스크립팅 : 악의적 스크립트 삽입하여 정보 탈취

- sql 삽입 : 입력칸에 sql을 삽입하여 무단으로 db 접근

- 경로 조작 및 자원 삽입 : 데이터 입출력 경로 조작하여 시스템 자원 접근 

 

보안 기능과 보안약점

-인증, 접근제어, 암호화 등 구현하기위한 점검항목

- 하드코드된 비밀번호 : 소스 유출시 하드코드 패스워드 이용 가능  -> 비밀번호 암호화하여 별도 저장

- 취약한 암호화 알고리즘 : 암호 해독하여 중요 정보 탈취 ->안전한 암호화 알고리즘 사용

- 인증없이 기능 허용 : 중요 정보나 기능에 접근 -> 인증 구현

- 중요 자원에 잘못된 권한 설정 : 중요한 자원에 접근해 정보나 권한 사용 -> 관리자만 접근가능하도록 설정

- 암호화없이 정보 저장 및 전송 : 평문 데이터를 탈취하여 이용 -> 암호화, HTTPS나 SSL 같은 보안 채널 이용

 

* hard code 하드 코드 : 데이터를 코드 안에서 직접 입력

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

캡슐화, 코드 오류  (0) 2020.05.16
시간 및 상태, 에러 처리  (0) 2020.05.16
개발 보안  (0) 2020.05.16
DML  (0) 2020.05.16
DCL  (0) 2020.05.16
728x90

개발 보안

- 데이터 가용성, 무결성, 기밀성 목표

 

SDLC Softwere Development Life Cycle

- 소프트웨어 개발 생명 주기

 

Secure SDLC

- SDLC에 보안 프로세스 추가

- 요구사항 분석, 설계, 구현, 테스트, 유지보수 등 SDLC 전단계에 필요한 보안활동 제시

 

보안 활동

- 요구사항 분석 단계 : 보안 요구사항 확인

- 설계 단계 : 보안 요구사항 설계서에 반영 및 설계서 작성

- 구현 단계 : 설계서에 따라 보안 요구사항 구현

- 테스트 단계 : 보안 사항 반영 확인

- 유지보수 단계 : 발생 가능한 보안 사고 고려, 발생시 보안 패치

 

secure coding 시큐어 코딩

- SW 구현 중 보안 취약점 최소화 하도록 코딩

 

세션

- 서버와 클라이언트 연결

 

세션 통제

- 세셜 연결 + 연결 후 정보 관리

- 요구사항 분석, 설계 단계서 진단해야함

 

불충분한 세션 관리

- 세션 ID가 일정 규칙으로 만들거나, 타임아웃이 길어 발생하는 문제 -> 허가되지 않은 세션으로 접근가능

 

잘못된 세션에 의한 정보 노출

- 싱글턴 패턴의 race condition으로 오류 발생 -> 정보 노출 -> 지역 변수로 변수 범위 제한

 

singleton 싱글턴

- 하나의 객체로 여려곳에서 사용

 

race condition

- 두 프로세스가 공유 자원쓰기위해 경쟁

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

시간 및 상태, 에러 처리  (0) 2020.05.16
보안 약점  (0) 2020.05.16
DML  (0) 2020.05.16
DCL  (0) 2020.05.16
DDL  (0) 2020.05.16
728x90

DML Data Manipulation Language

- 데이터 조작어

 

검색문

select [속성] from 테이블명 [where 조건] [group by 속성명,...] [having 조건] [order by 속성명 [asc | desc]];

- group by : 해당 속성들을 그룹

- having : group by와 같이 사용 그룹 조건

- order by : 정렬. 디폴트 asc 오름차순

 

삽입문

insert into 테이블명([속성명, ...]) values (데이터, ...);

 

삭제문

delete from 테이블명 [where 조건];

 

갱신문

updaete 테이블 set 속성=속성값 [where 조건];

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

보안 약점  (0) 2020.05.16
개발 보안  (0) 2020.05.16
DCL  (0) 2020.05.16
DDL  (0) 2020.05.16
형상 관리  (0) 2020.05.15
728x90

DCL Data control Language

- 데이터 제어어

- 데이터 보안, 무결성, 병행제어, 복원 등 정의

 

grant/revoke

- 권한 부여 혹은 취소

1. 사용자 등급 지정 및 해제

- 사용자 등급 : DBA(데이터베이스 관리자), resource(데이터베이스, 테이블 생성 가능), connect(단순 사용자)

grant 사용자등급 to 사용자id [identified by 암호];

revoke 사용자등급 from 사용자id;

 

2. 테이블 속성 권한 부여/취소

- 권한 목록 : all, select, insert, delete, update, alter 등

- with grant option, grant option for : 타사용자에게 권한 부여

- casecade : 타 사용자에게 부여한 권한도 같이 삭제

grant 권한목록 on 테이블명 to 사용자 [with grant option]];

revoke [grant option for] 권한목록 on 테이블명 from 사용자 [cascade];

 

commit

- 데이터베이스 변경내용 반영하는 명령

- commit 없이 dml 성공 후 자동 커밋 혹은 롤백하도록 자동 커밋 설정 가능

commit;

 

rollback

- commit 되지 않는 변경내용 취소

- rollback [to 세이브포인트명];

 

savepoint

- 롤백 할 시점 지정 명령

savepoint [세이브포인트명];

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

개발 보안  (0) 2020.05.16
DML  (0) 2020.05.16
DDL  (0) 2020.05.16
형상 관리  (0) 2020.05.15
무결성  (0) 2020.05.15
728x90

DDL Data Define Language

- 데이터 정의어

- 데이터베이스 테이블 구조, 형식 등 정의

 

create table

- 테이블 정의 명령어

- primary key : 기본키 설정

- unique : 대체키 지정

- foreign key : 참조 설정 

- constraint : 제약조건명 설정. constraint [제약조건명] foreign key(속성명) references 타테이블명(타테이블기본키)

- not null : 널 허용 x

- on delete, update : 삭제, 업데이트시 옵션 지정 가능

 -> no action : 테이블 변화시 행동 x

    casecade : 참조테이블 튜플 삭제시 관련 튜플 삭제

    set null : 참조 테이블 변화시 기존 속성 null로 변경

    set default : 참조 테이블 변경,삭제시 기존 속성을 기본값으로 변겅

create table 테이블명

(

    속성명 데이터타입 [default 값] [not null] [primary key] [unique],

    primary key(속성명)

    foreign key(속성명) references 타테이블명(타테이블의 기본키)

);

 

 

create view

- 뷰 정의 명령

- select 문 서브쿼리로 select 결과를 뷰로 설정

create view 뷰명(속성명,[,속성명]) as select 문;

 

 

 

 

create index

- 검색시간 단축을 위한 자료구조인 인덱스 정의

- 정렬 미지정시 기본으로 오름차순 정렬

create [unique] index 인덱스명 on 테이블명(속성명 [asc | desc]);

 

 

 

 

alter table

- 테이블 정의 변경

alter table 테이블명 add 속성명 데이터타입 [not null];

alter table 테이블명 alter 속성명 데이터타입 [set default 기본값];

alter table 테이블명 drop column 속성명 [cascade];

 

 

 

 

 

drop

- 테이블, 뷰, 인덱스, 스키마, 도메인, 제약조건 등 제거하는 명령어

- casecade : 참조하는 다른 개체도 함께 제거

- restricted : 타 개체가 삭제하는 개체를 참조시 제거 취소

drop table 테이블명 [cascade | restricted];

drop view 뷰명 [cascade | restricted];

drop index 인덱스명 [cascade | restricted];

drop domain 도메인명 [cascade | restricted];

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

DML  (0) 2020.05.16
DCL  (0) 2020.05.16
형상 관리  (0) 2020.05.15
무결성  (0) 2020.05.15
  (0) 2020.05.15

+ Recent posts