7.3. 프로그래머가 사용하도록 의도된 인터페이스만 호출해라

프로그램이 사용하도록 의도된 API (application programming interface) 만 호출해라. 보통 프로그램은 대화식 프로그램들을 포함하여 모든 다른 프로그램들을 호출할 수 있다. 그러나 인간이 호출하는 방식과 동일하게 대화식 프로그램을 호출하는 것은 보통 현명하지 않다. 문제는 프로그램의 human 인터페이스들이 의도적으로 기능성이 풍부하며 종종 완전히 제어하기 어렵다는 것이다. 7.2절 에 논의되었듯이 대화식 프로그램들은 대개 "escape" 코드들을 갖으며 이는 공격자가 해로운 기능들을 수행할 수 있도록 한다. 또한 대화식 프로그램들은 대개 "가장 그럴듯한 (most likely)" 디폴트들을 직감으로 알려고 한다; 이는 예상했던 디폴트가 아닐 수도 있으며 공격자기 이를 악용할 수 있는 방법을 발견할 수도 있다.

보통 직접적으로 호출하지 않아야 하는 프로그램들은 mail, mailx, ed, vi 와 emacs 등이 있다. 최소한 이들의 입력을 처음에 검사한 후 이들을 호출해라.

보통 프로그램의 기능성에 보다 안전한 접근을 제공하는 매개변수들 또는 프로그램이 사용하도록 의도된 여러 API 또는 애플리케이션이 있다; 대신 이들을 사용해라. 예를 들어 어떤 텍스트를 편집하기 위해 텍스트 에디터 (ed, vi 또는 emacs) 를 호출하는 대신 가능한 sed 를 사용해라.