[c언어] 시큐어 코딩 가이드라인과 C 언어

C 언어는 널포인터 디레퍼런싱, 버퍼 오버플로우, 형 변환 문제 등 다양한 보안 취약점이 있어 안전한 코드 작성에 주의가 필요합니다.

1. 널포인터 디레퍼런싱

C 언어에서는 포인터를 조작하는 과정에서 널포인터 디레퍼런싱이 발생할 수 있습니다. 이를 방지하기 위해 포인터 사용 전 유효성 검사를 수행해야 합니다.

if(ptr != NULL) {
    // 포인터 사용
}

2. 버퍼 오버플로우

C 언어에서는 배열의 크기를 넘어서는 값을 저장하면 버퍼 오버플로우가 발생합니다. 이를 방지하기 위해 정적 배열 대신 동적 할당을 사용하고, 글로벌 버퍼의 사용을 최소화해야 합니다.

// 정적 배열
char buffer[100];

// 동적 할당
char *buffer = (char*)malloc(100);

3. 형 변환 문제

C 언어의 형 변환은 데이터 손실을 유발할 수 있어 조심해야 합니다. 암시적 변환 대신 명시적 변환을 사용하고, 데이터 손실 가능성을 고려하여 코드를 작성해야 합니다.

float f = 3.14;
int i = (int)f; // 명시적 변환

안전한 C 코드를 작성하기 위해서는 위와 같은 시큐어 코딩 가이드라인을 준수해야 합니다.

참고문헌: