PHP 애플리케이션은 다음과 같은 이유로 해킹되는 경우가 많습니다.
PHP 애플리케이션이 너무 많습니다.
배우고 쓰기 쉽습니다.
나쁜 PHP는 작성하기 쉽습니다.
참 간단해요. PHP는 수년 동안 인기를 끌었습니다. PHP가 인기를 끌수록 더 많은 취약점이 발견됩니다. 이러한 해커가 발견한 취약점은 PHP 처리 엔진 자체에는 거의 없지만 일반적으로 스크립트 자체의 약점입니다.
이는 PHP 애플리케이션이 해킹될 경우 대부분 프로그래머의 잘못이라는 의미입니다. 죄송합니다. 하지만 사실입니다.
다른 웹 언어와 마찬가지로 보안 PHP를 작성할 수 있습니다. 이제 실제로 보안 문제를 탐구할 시간입니다.
PHP 해킹에 대한 최선의 보호
안전한 PHP 코드를 작성하는 것은 PHP 개발자에게 숨겨진 비밀스런 기술이 아닙니다. 그러나 신뢰도가 너무 분산되어 있어 좋은 보안 관행에 대한 느슨한 카탈로그나 경험 법칙을 수집하는 데 몇 주 또는 몇 달(또는 그리 오래 걸리지 않음)이 필요합니다. 진정한 경험만이 그것이 얼마나 중요한지 알려줄 것입니다.
다행히도 Ben Edmunds가 이를 해냈습니다. 최근에는 제가 읽은 최고의 보안 관련 책 중 하나이자 확실히 PHP에 대한 최고의 내용을 다루는 Building Secure PHP Apps - a Practical Guide를 출판했습니다. 이 글에서는 모든 PHP 개발자가 이 글을 읽어야 하는 이유를 자세히 설명하겠습니다.
이 책은 여러분을 개발자로서 다음 단계로 끌어올려 더 좋고 안전한 스크립트를 작성할 수 있도록 도와주는 간결한 가이드입니다.
소개
이 책은 웹 개발의 상식적인 규칙인 사용자를 믿지 말고 모든 입력을 필터링하라는 내용을 빠르게 다룹니다. 작은 시나리오로 시작하여 사용자가 시스템에 들어갈 수 있는 기술적 방법으로 넘어갑니다. 첫 번째 장의 주제는 다음과 같습니다.
SQL 주입
할당된 다수의 필드
유형 변환
입력/출력 필터링
이것들은 모두 PHP 초보자(및 일부 베테랑)가 항상 간과했던 것입니다. 입력 필터링은 많은 사람들에 의해 선택적인 단계로 간주되며 이 장에서 광범위하게 논의됩니다.
읽으면서 몇 년 전 직장에 처음 출근하던 날이 생각났습니다. 기존 코드를 깊이 파고들어 새 사용자 생성 스크립트에 대한 코드를 찾았습니다.
if ($_POST["isadmin"] == 1) { // code to set to admin in database }
이 코드는 악의적인 사용자가 쉽게 추측하고 간단한 양식 변수를 삽입하여 약 5,000개의 신용 카드 번호 및 기타 개인 정보에 액세스할 수 있는 매우 효율적인 스크립트이기 때문에 당황했습니다.
더 깊이 파고들어 다음 코드를 발견했습니다.
$sql = "INSERT INTO database (id,name,...) VALUES (" . $_POST["Name"] . ");"
이 끔찍한 코드에 의존하고 있었기 때문에 첫날 그 일을 거의 그만뒀습니다. 코드는 거기에 있으며 더 이상 생성되지 않도록 코드를 변경하는 것은 귀하의 책임입니다.
이 장에서는 이와 같은 코드가 왜 큰 위험을 초래하는지와 이를 해결하는 방법에 대해 설명합니다.
HTTPS 및 인증서
이것은 Ben이 스크립트, 스토리 및 약간의 유머를 포함하는 동시에 HTTPS의 덜 명확한 개념을 명확하게 설명하는 또 다른 영역입니다. 상사도 이해할 수 있도록 설명해줍니다.
이 책은 Apache 또는 Nginx에 배포하는 방법을 포함하여 인증서 작동 방식, 인증서 유형 및 구현 방법을 매우 포괄적으로 설명합니다.
비밀번호
이 책은 사용자 로그인 시스템을 만드는 개발자에게 매우 유용한 비밀번호, 해시, 조회 테이블 및 솔트에 대해 자세히 설명합니다.
2014년에도 너무 부족했던 부분이에요. 나는 여전히 비밀번호를 일반 텍스트로 저장하거나 ROT13 암호화와 같은 어리석은 방법을 사용하여 비밀번호를 보호하는 앱을 접합니다. 사람들이 귀하의 앱을 계속 사용하고 귀하의 명예를 유지하려면 이 작업을 수행하지 마십시오.
비밀번호 및 기타 민감한 데이터는 얻기가 매우 어렵거나 데이터베이스에 대한 전체 액세스 권한을 얻기도 어렵습니다. 이 책은 매우 포괄적이며 더 나은 시스템을 설계하는 데 좋은 지침을 제공할 것입니다.
인증 및 접근 제어
이 책은 매우 포괄적인 주제를 다루고 있습니다. 새로운 PHP 애플리케이션을 구축할 때 가장 먼저 고려해야 할 사항은 다음과 같습니다.
누가 어떤 리소스에 액세스할 수 있나요?
누가 다른 사용자의 액세스를 제어할 수 있나요?
이는 애플리케이션, 특히 민감한 데이터를 처리하는 애플리케이션에 대해 생각해 볼 중요한 부분입니다. 기업 개발의 상당 부분이 이에 전념하고 있습니다. 인증 및 접근 제어를 올바르게 설정하지 않으면 사용자에게 혼란을 주고 더 많은 작업을 생성하게 될 가능성이 가장 높습니다. 이보다 더 나쁜 것은 서버 데이터 격차 및/또는 데이터 손상입니다.
이 책은 기본 사항을 훌륭하게 다룬 다음, 참조할 수 있는 많은 코드 예제를 통해 파일이나 애플리케이션의 개별 페이지에 대한 액세스 제어와 같은 내용을 자세히 설명합니다.
특정 공격
시스템을 손상시키는 몇 가지 일반적인 공격을 다루는 이 책에서는 공격자가 애플리케이션을 공격하는 가장 일반적인 방법인 크로스 사이트 스크립팅을 매우 자세히 살펴봅니다. 다양한 종류의 공격과 자신을 보호하는 방법을 설명합니다.
나쁘지 않죠? 링크를 통해 책을 할인된 가격으로 구매하실 수 있습니다!
이 책에서 가장 마음에 들었던 점
이 책을 읽으면서 정말 즐거웠던 점은 초보자와 숙련된 프로그래머 모두에게 유용한 방식으로 정보를 제시했다는 점이었습니다. 다양한 개념이 제시되어 있으며, 개념이 무엇인지, 자신을 보호하는 방법이 나와 있습니다. 일부 기술 서적에 있는 "패딩"이 아닌 코드 예제가 많이 있습니다.
이 책은 내용이 많지 않아 금방 읽을 수 있다. 초보자도 이 책을 읽고, 각 주제를 검토하고, 코드를 살펴보고, 수정할 수 있습니다. 이 문제에서는 계속해서 수정해야 한다는 점을 기억하세요. 돌이켜보면 6개월 전에 작성한 코드가 부끄럽다면 옳은 일을 하고 있는 것입니다.
더 숙련되고 경험이 풍부한 프로그래머는 이 가이드를 사용하여 자신의 약점을 보완하고(이 업계에 얼마나 오래 종사했더라도 인정함) 현재 사용되는 작업 시스템에서 자신이 무엇을 하고 있는지 더 잘 이해할 수 있습니다. 예를 들어, 나는 수년 동안 인증을 미친 듯이 사용해왔지만 이 책에서 다루는 수준에서는 생각해 본 적이 없습니다.
당신이 누구이든, 당신은 뭔가를 배울 것입니다. 그러니 이 기사를 읽지 말고 가서 사본을 구입하세요! 이 링크를 이용하여 구매하고 할인 받으세요! !