Software Engineering2006. 3. 6. 02:47
1. 외부로부터 들어오는 모든 데이터를 검사하라
2. 루틴의 모든 매개변수 값을 검사하라

3. 잘못된 입력을 어떻게 처리할지 결정하라


이상은 스티브 맥코넬의 "Code Complete 2nd Edition"에서 제안하는 방어적 프로그래밍의 원칙이다.

나도 코딩을 하지만, 사실 일부러 신경쓰지 않는다면, 그리고 프로젝트에서 표준이 제공되지 않으면 잘 안하게 되는 경향이 있다. 하지만 최근 보안이 중시되는 경향을 감안한다면 어떤 프로그램을 만들더라도 반드시 이런 처리를 해줘야 한다. 이런 처리를 반드시 하는 코딩 습관을 만든다면 더욱 좋을 것이다.

또, 검사를 하더라도 아주 기본적인 검사만 하는 경우가 대부분이다..(저도..^^;;)
최근의 악의적인 코드나 공격등을 보면, 아주 엄격하게 검사를 하는 편이 좋다.
특히 DOS(서비스 거부)의 버퍼 오버 플로우 공격의 경우 아주 많은 양의 매개변수를 입력해서 프로그램을 공격한다. 그러므로, 받는 모든 변수의 NULL 여부 뿐만이 아니라 더 엄격하게 사이즈나 값의 범위 등을 모두 검사를 하는 것이 좋다. 가장 좋다고 생각되는 것은 프로그램에서 받을 수 있는 범위 외의 모든 값은 모두 거부하는 것이다.
Posted by kkongchi