보안이란 무엇입니까?
안전은 절대적인 기준이 아닌 상대적인 기준입니다.
불행하게도 대부분의 소프트웨어 프로젝트에서는 보안을 단순한 요구 사항으로 나열합니다. 안전합니까? 이 질문에 대한 대답은 뭔가 뜨거운지 묻는 것처럼 주관적입니다.
보안을 달성하기 위한 오버헤드는 합리적이어야 합니다.
대부분의 애플리케이션에서 적절한 수준의 보안을 달성하는 것은 간단하고 저렴합니다. 그러나 보호해야 할 정보가 매우 중요하거나 보안 요구 사항이 매우 엄격한 경우 보안 수준을 높이기 위해 더 많은 비용을 지불해야 합니다. 이 비용은 프로젝트 예산에 포함되어야 합니다.
보안을 달성하려면 사용 편의성이 합리적이어야 합니다.
매우 일반적인 현상은 WEB 애플리케이션의 보안이 크게 향상되는 반면 사용 편의성도 크게 떨어지는 것입니다. 비밀번호, SESSION 만료 시간 및 액세스 제어는 모두 합법적인 사용자에게 장애물을 야기합니다. 때로는 애플리케이션에 적절한 보안을 제공해야 하지만 이것이 모든 애플리케이션에 대한 유일한 솔루션은 아닙니다. 보안 규칙을 시행할 때 합법적인 사용자에게 더 많은 주의를 기울이는 것이 현명합니다.
보안은 설계의 일부여야 합니다.
애플리케이션을 설계할 때 보안을 고려하지 않는다면 계속해서 새로운 보안 취약점을 발견하게 될 것입니다. 주의 깊게 작성된 프로그램은 잘못된 디자인을 보완할 수 없습니다.
애플리케이션의 기본 단계는 대부분 합법적인 사용자를 위한 것입니다.
안전한 설계는 솔루션의 일부일 뿐입니다. 개발 중에 코딩이 시작되면 애플리케이션의 합법적인 사용자를 고려해야 합니다. 일반적으로 목표는 애플리케이션이 의도한 대로 작동하도록 만드는 것이지만, 적절한 애플리케이션 기능을 구현하는 것이 필요하므로 애플리케이션을 더 안전하게 만드는 것은 아닙니다.
자신을 훈련하십시오.
이 가이드를 읽고 있는 여러분은 보안에 대해 우려하고 있으며, 진부하게 들리겠지만 이는 매우 중요한 단계입니다. 웹이나 책에서 사용할 수 있는 수많은 리소스가 있으며, 대부분은 PHP Security Alliance의 저장소( http://phpsec.org/library/) 에 포함되어 있습니다.
먼저 모든 외부 데이터를 필터링합니다.
데이터 필터링은 모든 언어와 플랫폼에서 웹 애플리케이션 보안의 초석입니다. 변수를 초기화하고 외부에서 얻은 모든 데이터를 필터링하면 절반의 노력으로 두 배의 결과를 얻을 수 있으며 저렴한 비용으로 관리자가 발생할 수 있는 주요 보안 취약점을 예방할 수 있습니다. 화이트리스트가 블랙리스트보다 낫습니다. 이는 모든 데이터가 합법적인 것으로 입증될 때까지 불법으로 간주해야 함을 의미합니다(불법으로 입증될 때까지 모든 데이터를 합법적이라고 간주하는 것보다 낫습니다).