소개
PHP는 모듈로 설치되든 CGI로 설치되든 상관없이 해당 인터프리터가 서버의 파일에 액세스하고, 명령을 실행하고, 네트워크 연결을 생성하는 등의 작업을 수행할 수 있는 강력한 언어입니다. 이러한 기능은 서버에 많은 불안 요소를 추가할 수 있지만 PHP가 올바르게 설치 및 구성되고 보안 코드가 작성되는 한 PHP는 Perl 및 C보다 더 안전한 CGI 프로그램을 만들 수 있습니다. 또한, 유용성과 보안 사이에서 적절한 균형을 찾는 것도 가능합니다.
PHP는 다양한 방식으로 사용될 수 있으므로 PHP에는 사용자가 쉽게 구성할 수 있는 옵션이 내장되어 있습니다. 다양한 옵션을 통해 PHP는 많은 작업을 수행할 수 있지만 이러한 옵션의 설정과 서버 구성으로 인해 보안 문제가 발생할 가능성이 높습니다.
PHP의 옵션은 구문만큼 유연합니다. PHP를 사용하면 쉘 사용자 권한만 있는 환경에서 완전한 서버 측 프로그램을 만들거나, 너무 많은 위험을 감수하지 않고 엄격하게 제한된 환경에서 서버 측 포함(서버 측 포함)을 완료하는 데 사용할 수 있습니다. 이러한 환경을 설정하는 방법과 보안 수준은 주로 PHP 개발자에 따라 다릅니다.
이 장은 몇 가지 일반적인 보안 제안으로 시작하여 다양한 환경에서 보안을 최대화하는 방법을 설명하고 다양한 보안 수준에 대한 몇 가지 프로그래밍 원칙을 소개합니다.
일반
완전히 안전한 시스템은 존재하지 않으므로 보안 업계에서 일반적으로 사용되는 방법은 가용성과 위험의 균형을 맞추는 데 도움이 됩니다. 사용자가 제출한 모든 변수를 이중 검증하는 것은 책임감 있는 조치일 수 있지만 이로 인해 사용자가 복잡한 양식을 작성하는 데 많은 시간을 소비하게 되어 일부 사용자는 보안을 우회하려고 시도하게 될 수 있습니다.
최고의 보안 메커니즘은 사용자를 방해하거나 개발 난이도를 너무 높이지 않으면서 요구 사항을 충족할 수 있어야 합니다. 실제로 보안 메커니즘이 지나치게 강화된 시스템에서는 일부 보안 문제가 자주 발생합니다.
유명한 강도 균등의 원리를 잊지 마세요. 시스템의 강도는 가장 약한 링크에 의해 결정됩니다(배럴 원리와 동일). 모든 거래를 시간, 장소, 거래 유형 등을 기준으로 상세하게 기록하고, 하나의 쿠키에만 의존하여 사용자 인증을 한다면 해당 거래 기록에 대한 신뢰성이 크게 약화됩니다.
코드를 디버깅할 때 간단한 페이지라도 가능한 모든 시나리오를 감지하기 어렵다는 점을 기억하세요. 불만족스러운 직원이 반드시 원하는 것을 입력하지 않을 수도 있고, 해커가 시스템을 연구할 시간도 충분합니다. 물론, 애완 고양이가 키보드 위로 뛰어오르기도 합니다. 이것이 바로 부적절한 데이터가 도입될 수 있는 위치를 찾기 위해 모든 코드를 검사해야 하는 이유입니다. 그러면 코드가 개선, 단순화 또는 향상될 수 있습니다.
인터넷에는 유명해지고 인생을 즐겁게 만들기 위해 코드를 해독하고, 웹사이트를 공격하고, 불법적인 데이터를 입력하는 사람들로 가득합니다. 대형 웹사이트든 소규모 웹사이트이든 인터넷에 연결할 수 있으면 표적이 됩니다. 많은 해킹 프로그램은 웹사이트의 크기에 신경 쓰지 않고 IP 주소를 기계적으로 스캔하여 피해자를 찾습니다. 당신은 그렇지 않기를 바랍니다.