inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

사용자로부터 데이터 입력을 받는 프로그램

201

권혁준

작성한 질문수 7

0

안녕하세요.

 

표준 입출력 함수랑 그 동작 특성을 공부하다 보니까 사용자로부터 데이터 입력을 받는 프로그램의 경우 생각보다 런타임 오류가 발생할 수 있는 부분이 되게 많더라구요..

 

조금 애매한 질문일 수도 있고, 또 경우에 따라 다르겠지만.. 발생할 수 있는 입력 오류나 그것에 대한 예외처리를 어느정도 수준까지 신경써서 코드를 작성하는 게 좋을까요..? 

당장 생각나는 건 버퍼 오버플로우나 입력 데이터의 범위 체크 정도인데..

 

제가 아직 오픈소스를 볼 만큼 공부가 된 것 같지는 않지만.. 참고할 만한 자료가 있을까요..?

 

감사합니다.

c

답변 1

1

강민철

안녕하세요 :)

멋진 고민을 하고 계시는군요!

음.. 사실,

"발생할 수 있는 입력 오류나 그것에 대한 예외처리를 어느정도 수준까지

신경써서 코드를 작성하는 게 좋을까요?" 

라는 질문에 대해서는 가장 심혈을 기울이면 기울일 수록 좋고, 꼼꼼하면 꼼꼼할 수록 좋은 것 같습니다 :)

모든 상황을 완벽하게 대비한 프로그램이 완벽한 프로그램이라는 뜻이니까요.

하지만 참고할 만한 자료를 드리자면,

아무래도 시큐어코딩 쪽 자료를 드리는 게 나을 것 같아 아래 자료를 첨부해드립니다.

말씀하신 것처럼 소프트웨어 취약점, 버그는 사용자가 입력하는 값으로부터 발생하는 경우가 많습니다.

그런 일이 발생하지 않도록 안전하게 코딩하는 것을 시큐어코딩이라고 합니다.

 

하나는 한글 자료이고 다른 하나는 영어 자료입니다.

물론 지금 당장 아래에 있는 것들을 모두 다 달달 외우고 있어야 한다! 이건 아니지만

심심하실 때 배경지식삼아 읽어보셔도 좋을 듯 합니다 :)

[링크1] https://www.kisa.or.kr/public/laws/laws3_View.jsp?cPage=6&mode=view&p_No=259&b_No=259&d_No=54&ST=T&SV=

[링크2] https://resources.sei.cmu.edu/asset_files/BookChapter/2005_009_001_52692.pdf

 

감사합니다.

 

Export template 안됨

1

63

2

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

88

3

main 함수에서 왜 int만 선언이 되는걸까요

1

78

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

75

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

78

1

프로토타입과 함수간의 인자 불일치

1

87

2

12.12 헤더 관련 질문

1

74

2

Visual Studio Community 2026 사용 문의

1

169

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

71

2

getchar(), putchar()

1

111

3

강의자리ㅛ

1

93

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

127

2

소스파일안에 여러 파일

1

87

2

F5와 F7의 차이

1

90

2

c = TWO * (a+b); 에서 a와 b는?

1

67

2

; 세미콜론을 붙이는 기준에 문의

1

78

1

Step over 기능 문의

1

64

2

2.6 강의 따옴표 출력 규칙 문의

1

87

2

int main 함수 관련 오류 문의

1

76

2

13.4 words[0]

0

73

2

11.7 함수를 구현해 봤습니다.

1

67

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

71

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

60

2

11.6 fit_str함수를 구현해 봤습니다.

1

59

2