Undoubtedly there are all sorts of languages in the world, yet none of them is without meaning. | |
1 Corinthians 14:10 (NIV) |
언어들에 특정적인 많은 보안 문제들이 있는데 이들은 다음과 같이 요약될 수 있다:
현실적으로 사용할 수 있는 모든 관련 경고와 보호 메카니즘을 켜라. 컴파일 언어의 경우 이는 컴파일타임 및 런타임 메카니즘 모두를 포함한다. 일반적으로 보안 관련 프로그램들은 모든 경고가 켜진채 새롭게 컴파일 되어야 한다.
언어에 위험하고 반대되고 있는 연산들을 피해라. 정확히 사용하기 어려운 연산들이 "위험"한 것이다.
언어의 인프라 (예, 런타임 라이브러리) 가 사용될 수 있는지 안전하게 보호되어 있는 지를 보증해라.
문자열을 자동적으로 가비지 컬렉트하는 언어들은 기밀 데이타를 즉시 지우는데 특히 주의해야 한다 (특히 비밀키와 패스워드).
사용하고 있는 연산들의 의미 규칙을 정확히 알아라. 문서내에서 각 연산의 의미 규칙을 찾아라. 적절하다고 확신하지 못한다면 반환값들을 무시하지 마라. "signed" 와 "unsigned" 값들 사이의 차이를 무시하지 마라. 이는 C 와 같이 예외 처리를 지원하지 않는 언어에서 특히 어렵지만 방법은 있다.