SS 14
개강까지 D-37!
🌱 Coursera - Software Security (~8/2)
- 안전한 컴퓨터 시스템: 여러가지 상황속에서 바람직하지 못한 특정 동작 방지
- 정확성: 시스템이 무엇을 해야할 것인가
- 보안성: 시스템이 무엇을 하지 말아야 할 것인가
✅ Kind of undesired behavior
- confidentiality: 개인정보/기업비밀 자원/정보 훔치기 위해 시스템을 조작할 수 있는 경우
- integrity: 시스템이 유지하는 정보 변경/오염, 시스템 기능을 악용할 수 있는 경우
- availability: 시스템 훼손, 시스템이 물건 사거나 은행자금에 접근하려는 정당한 사양자에게 서비스 제공을 거부하도록 만든 경우
defect -> 시스템의 요구사항을 충족시키지 못하는 시스템 설계/구현상의 문제점
flaw -> 설계상의 결점
bug -> 구현상의 결점
✅ Correctness / Security
- vulnerability == bug, 대부분의 소프트웨어는 버그를 가진다.
- An adversary is noat a normal user, 일반적인 사용사례들을 통한 버그의 중요성 판단은 충분하지 않다.
✅ What is software security ?
컴퓨터 보안의 한 분야, 소프트웨어의 안전한 설계와 구현
보안 시스템의 코드에 집중
(타 방법들이 블랙박스식 접근 / sw 보안은 화이트박스식 접근)
🌱 알고리즘/C++
✅ c와 c++의 표준 stream 동기화 끊기
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
c의 입출력 속도에 비해 cout/cin의 속도가 떨어지기 때문 but 동기화 끊으면 c의 입출력 사용 못해
✅ char -> int
숫자, 아스키 코드
문자 1을 int 1로 수정하고 싶다면?
char ch = 1;
int num = ch - '0';
아스키 코드의 순서가 0 부터 9 까지 차례대로 1씩 늘어나
문자의 아스키 코드값을 보고 싶다면? (int)를 붙여 형변환
char ch = 1;
int numAscii = (int)ch; // 49
a = 97, A = 65
알파벳은 총 26개
✅ 입력?
- cin
<iostream>에 포함되어 있다. 표준 입력 버퍼에서 개행 문자 제외한 값 가져와, 공백/개행 입력 시 공백 이전 까지의 값만 결과로 받아
- getline()
string 라이브러리의 getline(): 최대 문자 수를 입력하지 않아도 된다.
원하는 구분자를 만날 때까지 모든 문자열을 받아 하나의 string 객체에 저장!
getline(입력스트림 오브젝트, 문자열을 저장할 string객체, 종결 문자);
❗️ 주의
int n;
string str;
cin >> n;
getline(cin, str);
n을 입력 받은 후, 문자열을 입력받지 않고 바로 다음 코드로 넘어가게 된다.
왜?? 버퍼에 정수 값을 입력한 뒤 누른 엔터(‘\n’)가 그대로 남아있어 getline()에 들어가기 때문이다. 이를 해결하기 위해 cin.ignore() 라는 함수를 사용!
int n;
string str;
cin >> n;
cin.ignore();
getline(cin, str);
cin.ingore()가 입력 버퍼의 모든 내용을 제거해주어 getline()이 정상적으로 동작