웹 개발에서 XSS (Cross-Site Scripting Attack)는 일반적인 보안 위협입니다. XSS는 악의적 인 스크립트 코드를 웹 페이지에 주입하여 사용자의 브라우저 제어를 공격하여 민감한 정보를 훔칩니다. 이러한 공격을 방지하기 위해 PHP 개발자는 효과적인 보안 조치를 취해야하며 동시에 디버깅 및 문제 해결 문제에 대한 적절한 오류보고 정보를 생성해야합니다. 이 기사는 XSS 공격을 방지하는 방법을 심층적으로 탐색하고 해당 오류 보고서를 생성합니다.
PHP는 htmlspecialchars () 함수를 제공하여 HTML에서 특수 문자를 피할 수있어 악의적 인 코드 실행을 피할 수 있습니다. 컨텐츠를 출력하기 전에이 기능을 사용하면 XSS 공격의 위험을 크게 줄일 수 있습니다. 다음은 샘플 코드입니다.
$ name = $ _get [ 'name']; echo htmlspecialchars ($ name);
이 예 에서이 프로그램은 $ _get hyperglobal 변수에서 매개 변수 "이름"을 가져 와서 악의적 인 HTML 또는 JavaScript 코드가 출력되는 것을 방지하기 위해 htmlspecialchars () 함수를 사용하여 탈출합니다.
CSP (Content Security Policy)는 효과적인 보안 정책입니다. CSP 헤더를 설정하면로드 할 수있는 리소스 소스를 지정하여 XSS 공격을 방지 할 수 있습니다. HTTP 헤더의 CSP 정책을 구성함으로써 개발자는 외부 악성 스크립트 주입을 방지하기 위해 웹 페이지 리소스로드를 제어 할 수 있습니다. 예는 다음과 같습니다.
헤더 ( "Content-Security-Policy : Default-Src 'self'");
이 예에서 CSP 정책은 현재 도메인 이름에서만로드되도록 자원을 제한하여 외부 악성 코드의 주입을 효과적으로 방지합니다.
X-Content-Type-Options는 HTTP 헤더 옵션으로 브라우저가 MIME 유형 스니핑을 통해 웹 컨텐츠를 구문 분석하는 것을 방지합니다. X-Content-Type-Options를 NOSNIFF로 설정하면 브라우저가 서버에서 지정한 컨텐츠 유형에 따라 항상 컨텐츠를 구문 분석하여 XSS 공격의 위험을 줄일 수 있습니다. 예는 다음과 같습니다.
헤더 ( "X-Content-Type-Options : Nosniff");
이 설정은 서버 응답의 컨텐츠 유형에 따라 브라우저에 컨텐츠를 엄격하게 구문 분석하므로 부적절한 스크립트 실행을 피합니다.
XSS 공격을보다 효과적으로 디버그하고 문제를 해결하기 위해 코드에서 대상 오류보고 정보를 생성 할 수 있습니다. XSS 공격이 감지되면 관련 정보를 기록하고 명확한 오류보고 정보를 생성해야합니다. 예는 다음과 같습니다.
$ name = $ _get [ 'name']; if (preg_match ( "/ <script>/i", $name)) { // 공격 관련 정보를 기록합니다 error_log("XSS공격:" . $name); // 오류 메시지를 생성합니다 echo "发生了跨站脚本공격,악성 코드를 입력하지 마십시오!"; exit; }
在这个示例中,preg_match()函数检查参数$name是否包含