현재 위치: > 최신 기사 목록> PHP 및 CGI 크로스 사이트 스크립팅 공격 (XSS) 보호 전략 및 실제 구현 방법

PHP 및 CGI 크로스 사이트 스크립팅 공격 (XSS) 보호 전략 및 실제 구현 방법

M66 2025-06-25

PHP 및 CGI의 간단한 스크립팅 공격을위한 예방 조치 및 구현 방법

인터넷의 빠른 발전으로 네트워크 보안 문제가 점점 더 중요 해지고 있습니다. 그 중에서도 크로스 사이트 스크립팅 (XSS)은 일반적이고 심각한 해로운 공격 유형입니다. 이 기사는 PHP 및 CGI 프로그래밍 환경에 대한 크로스 사이트 스크립팅 공격을 효과적으로 방지하고 실용적인 코드 예제를 제공하는 방법을 살펴 봅니다.

1. 크로스 사이트 스크립트 공격의 원리

크로스 사이트 스크립팅 공격은 공격자가 악의적 인 스크립트를 웹 사이트에 주입하여 사용자에게 브라우저별로 이러한 코드를 실행하도록 유도합니다. 공격자는이를 사용하여 사용자 정보를 훔치고 웹 컨텐츠를 조작하는 등을 사용합니다. XSS는 주로 스토리지 유형, 반사 유형 및 DOM 유형의 세 가지 유형으로 나뉩니다.

이러한 공격을 방지하려면 여러 수준의 보호 조치가 필요합니다.

2. 예방 조치 및 구현 방법

1. 입력 필터링 및 확인

사용자 입력은 XSS 공격의 주요 진입 점입니다. 입력 컨텐츠는 악의적 인 코드 주입을 방지하기 위해 PHP 및 CGI가 제공 한 함수를 사용하여 필터링하고 검증해야합니다.

 // PHP특수 문자 필터
function filter_input($input) {
  return htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
}

// PHP입력 길이를 확인하십시오
function validate_input($input, $min_len, $max_len) {
  $input_len = mb_strlen($input, 'UTF-8');
  if ($input_len < $min_len || $input_len > $max_len) {
    return false;
  }
  return true;
}

// CGI특수 문자 필터
sub filter_input {
  my ($input) = @_;
  $input =~ s/</</g;
  $input =~ s/>/>/g;
  $input =~ s/'/&apos;/g;
  $input =~ s/"/"/g;
  return $input;
}

// CGI입력 길이를 확인하십시오
sub validate_input {
  my ($input, $min_len, $max_len) = @_;
  my $input_len = length($input);
  if ($input_len < $min_len || $input_len > $max_len) {
    return 0;
  }
  return 1;
}

2. 출력 인코딩

출력 컨텐츠를 인코딩하면 브라우저가이를 실행 가능한 코드로 구문 분석하지 않고 악의적 인 스크립트 실행을 피할 수 있습니다.

 // PHP출력 인코딩
function output_encode($output) {
  return htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
}

// CGI출력 인코딩
sub output_encode {
  my ($output) = @_;
  $output =~ s/</</g;
  $output =~ s/>/>/g;
  $output =~ s/'/&apos;/g;
  $output =~ s/"/"/g;
  return $output;
}

3. HTTP 보안 헤더를 설정하십시오

CSP (Content-Security-Policy)와 같은 적절한 HTTP 응답 헤더를 구성하여 웹 페이지에로드 할 수있는 리소스 소스를 제한하여 XSS 공격의 위험을 크게 줄입니다.

 // PHP설정Content-Security-Policy머리
header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'");
  
# CGI설정Content-Security-Policy머리
print "Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'\n";

4. 안전한 세션 메커니즘을 사용하십시오

세션 보안을 향상시키고 세션 납치를 피하십시오. php에서는 session_regenerate_id () 및 session_set_cookie_params ()를 사용하여 관련 설정을 할 수 있습니다.

 // PHP설정session안전 매개 변수
session_set_cookie_params(0, '/', '', true, true);
session_regenerate_id();

5. 방화벽을 배치하십시오

서버 레벨 방화벽은 원격 액세스 포트 (예 : SSH 및 FTP)를 제한하도록 구성되어 공격 위험을 효과적으로 줄입니다.

3. 요약

크로스 사이트 스크립팅 공격은 일반적이고 심각한 보안 위협입니다. 입력 필터링 및 검증, 출력 인코딩, HTTP 헤더 설정, 보안 세션 메커니즘 및 방화벽 보호와 같은 여러 측정 값을 통해 웹 사이트 보안이 크게 향상 될 수 있습니다. 개발자는 사용자 데이터 및 응용 프로그램이 안전 할 수 있도록 보안 모범 사례에 계속 집중해야합니다.

위의 것은 PHP 및 CGI 환경에서 크로스 사이트 스크립팅 공격을 방지하는 실용적인 방법이며 개발 작업에 도움이되기를 바랍니다.