현재 위치: > 최신 기사 목록> PHP 세션 크로스 도메인 공격 보호 기술 : 쿠키 설정, 소스 검증 및 토큰 메커니즘

PHP 세션 크로스 도메인 공격 보호 기술 : 쿠키 설정, 소스 검증 및 토큰 메커니즘

M66 2025-06-22

Domain 교차 도메인 공격에 대한 PHP 세션 예방 조치

웹 응용 프로그램에서 세션은 사용자 상태를 추적하고 정보를 저장하는 중요한 수단입니다. 그러나 웹 환경의 개방성으로 인해 세션 데이터는 도메인 교차 공격에 취약합니다. 이 기사는 PHP에서 일반적이고 실용적인 보호 기술을 공유하고 특정 코드 예제를 포함합니다.

1. 쿠키 보안 속성을 설정하십시오

세션 ID는 일반적으로 쿠키에 저장됩니다. 쿠키 속성을 조정하여 크로스 도메인 공격을 방지하기 위해 보안을 향상시킬 수 있습니다. 주로 관련 :

  • httponly : JavaScript가 쿠키에 액세스하는 것을 막고 스크립트를 통해 세션 ID를 훔치는 것을 피합니다.
  • 보안 : 중간의 공격을 방지하기 위해 HTTPS 연결에서 쿠키 만 전송합니다.

샘플 코드 :

session_start ();
<p>// 현재 쿠키 매개 변수를 얻습니다<br>
$ cookieparams = session_get_cookie_params ();</p>
<p>// 안전한 쿠키 속성을 설정합니다<br>
session_set_cookie_params (<br>
$ CookieParams [ "Lifetime"],<br>
$ CookieParams [ "Path"],<br>
$ CookieParams [ "도메인"],<br>
사실, // 보안<br>
true // httponly<br>
);</p>
<p>$ _session [ "username"] = "user123";</p>
<p>session_write_close ();<br>

2. 요청 소스 도메인 이름을 확인하십시오

요청 된 소스 도메인 이름을 확인함으로써 세션 조작이 승인 된 도메인 이름에서만 발생하는지 확인하여 크로스 도메인 공격의 위험이 줄어 듭니다. $ _server [ 'http_referer']를 사용하여 구현할 수 있습니다.

 if (isset($urlParts['host']) && $urlParts['host'] === $allowedDomain) {
    return true;
} else {
    return false;
}

}

// 예제를 사용합니다
if (validateReferer ( "example.com")) {
// 세션 관련 작업을 수행합니다
} 또 다른 {
// 불법 소스, 액세스 거부 또는 프롬프트 오류
}

3. CSRF를 방지하기 위해 토큰을 생성하고 확인하십시오

각 세션에 대해 고유 한 토큰을 생성하고 클라이언트가 요청할 때 휴대 한 다음 서버 측에서 토큰의 일관성을 확인하여 위조 요청을 방지하십시오.

// 토큰을 생성합니다
함수 generateToken () {
    $ token = bin2Hex (random_bytes (32));
    $ _session [ "CSRF_TOKE"] = $ 토큰;
    $ 토큰 반환;
}
<p>// 토큰을 확인합니다<br>
함수 validateToken ($ 토큰) {<br>
반환 ISSET ($ _ 세션 [ "CSRF_TOKE"] && $ _SESSION [ "CSRF_TOKEN"] === $ 토큰;<br>
}</p>
<p>// 토큰을 생성하여 출력하여 형성합니다<br>
$ token = generateToken ();</p>
<p>에코 &#39;<form method="post"> &#39;;;<br>
에코 &#39;<input type="hidden" name="csrf_token" value="' . $token . '"> &#39;;;<br>
에코 &#39;<input type="submit" value="제출하다"> &#39;;;<br>
에코 &#39;</form> &#39;;;</p>
<p>// 요청 처리에서 확인하십시오<br>
if (isset ($ _ post [ "csrf_token"]) && validateToken ($ _ post [ "csrf_token"]) {<br>
// 토큰이 유효하고 작업을 수행합니다<br>
} 또 다른 {<br>
// 토큰이 유효하지 않고 작동이 거부됩니다<br>
}<br>

요약

쿠키 속성을 합리적으로 설정하고 요청 소스 도메인을 확인하고 토큰 메커니즘을 채택함으로써 PHP 세션의 크로스 도메인 공격 위험을 효과적으로 보호 할 수 있습니다. 실제 개발에서 특정 비즈니스 시나리오를 결합하고 보안 취약점에 계속주의를 기울이고 정책을 적시에 업데이트하여 사용자 데이터 및 개인 정보 보호 보안을 보장하는 것이 좋습니다.