시큐어코딩을 하자

따로 정리한 내용은 아니며, 자주 보기위해 링크성으로 저장한다.

Top 10 Secure Coding Practices

Validate input.
입력의 유효성을 검사합니다. 모든 신뢰할 수없는 데이터 소스의 입력을 검증합니다. 적절한 입력 검증은 대다수의 소프트웨어 취약점을 제거 할 수 있습니다. 명령 줄 인수, 네트워크 인터페이스, 환경 변수 및 사용자 제어 파일을 포함한 대부분의 외부 데이터 소스를 의심하십시오.

Heed compiler warnings.
컴파일러 경고에주의하십시오. 컴파일러에서 사용할 수있는 가장 높은 경고 수준을 사용하여 코드를 컴파일하고 코드를 수정하여 경고를 제거하십시오. 정적 및 동적 분석 도구를 사용하여 추가 보안 결함을 탐지하고 제거하십시오.

Architect and design for security policies.
보안 정책을 디자인 하고 설계합니다. 소프트웨어 아키텍처를 만들고 소프트웨어를 설계하여 보안 정책을 구현하고 시행하십시오. 예를 들어, 시스템이 서로 다른 시간대에 다른 권한을 필요로하는 경우 시스템을 적절한 권한 세트가있는 서로 다른 상호 통신 하위 시스템으로 나누는 것을 고려하십시오.

Keep it simple.
단순하게 유지하십시오. 디자인을 가능한 한 간단하고 작게 유지하십시오. 복잡한 디자인은 구현, 구성 및 사용시 오류가 발생할 가능성을 높입니다. 또한 보안 메커니즘이 더욱 복잡 해짐에 따라 적절한 수준의 보증을 달성하는 데 필요한 노력이 급격히 증가합니다.

Default deny.
기본 거부. 제외 대신 권한에 따라 액세스 결정을하십시오. 즉, 기본적으로 액세스는 거부되고 보호 체계는 액세스가 허용되는 조건을 식별합니다.

Adhere to the principle of least privilege.
최소 권한 원칙을 준수하십시오. 모든 프로세스는 작업을 완료하는 데 필요한 최소한의 권한으로 실행해야합니다. 상승 된 권한은 권한 작업을 완료하는 데 필요한 최소 시간 동안 만 액세스해야합니다. 이 접근법은 공격자가 상승 된 권한으로 임의의 코드를 실행해야하는 기회를 줄입니다.

Sanitize data sent to other systems.
다른 시스템으로 전송 된 데이터를 살균합니다. 명령 셸, 관계형 데이터베이스 및 상업용 기성품 (COTS) 구성 요소와 같은 복잡한 하위 시스템에 전달 된 모든 데이터를 위생 처리하십시오. 공격자는 SQL, 명령 또는 기타 주입 공격을 사용하여 이러한 구성 요소에서 사용되지 않는 기능을 호출 할 수 있습니다. 호출되는 복잡한 서브 시스템이 호출이 작성된 컨텍스트를 이해하지 못하기 때문에 이것은 입력 검증 문제점 일 필요는 없습니다. 호출 프로세스는 컨텍스트를 이해하기 때문에 서브 시스템을 호출하기 전에 데이터 위생을 담당합니다.

Practice defense in depth.
깊이있는 수비를 연습하십시오. 한 방어 계층이 부적절한 것으로 밝혀지면 다른 방어 계층이 보안 결함이 악용 될 수있는 취약점을 방지하고 성공적인 악용의 결과를 제한 할 수 있도록 여러 방어 전략으로 위험을 관리합니다. 예를 들어 보안 프로그래밍 기술과 보안 런타임 환경을 결합하면 배포시 코드에 남아있는 취약성이 운영 환경에서 악용 될 가능성을 줄일 수 있습니다.

Use effective quality assurance techniques.
효과적인 품질 보증 기술을 사용하십시오. 좋은 품질 보증 기술은 취약점을 식별하고 제거하는 데 효과적 일 수 있습니다. Fuzz 테스트, 침투 테스트 및 소스 코드 감사는 모두 효과적인 품질 보증 프로그램의 일부로 통합되어야합니다. 독립적 인 보안 검토는보다 안전한 시스템으로 이어질 수 있습니다. 외부 검토자는 독립적 인 관점을 가져옵니다. 예를 들어, 잘못된 가정을 확인하고 수정하는 데 사용된다.

Adopt a secure coding standard.
안전한 코딩 표준을 채택하십시오. 대상 개발 언어 및 플랫폼에 대한 보안 코딩 표준을 개발 및 / 또는 적용하십시오.

https://wiki.sei.cmu.edu/confluence/display/java/SEI+CERT+Oracle+Coding+Standard+for+Java

Written by

엘디는 사랑입니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store