웹 응용 프로그램에서 세션은 사용자 상태를 추적하고 정보를 저장하는 중요한 수단입니다. 그러나 웹 환경의 개방성으로 인해 세션 데이터는 도메인 교차 공격에 취약합니다. 이 기사는 PHP에서 일반적이고 실용적인 보호 기술을 공유하고 특정 코드 예제를 포함합니다.
세션 ID는 일반적으로 쿠키에 저장됩니다. 쿠키 속성을 조정하여 크로스 도메인 공격을 방지하기 위해 보안을 향상시킬 수 있습니다. 주로 관련 :
샘플 코드 :
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>
요청 된 소스 도메인 이름을 확인함으로써 세션 조작이 승인 된 도메인 이름에서만 발생하는지 확인하여 크로스 도메인 공격의 위험이 줄어 듭니다. $ _server [ 'http_referer']를 사용하여 구현할 수 있습니다.
if (isset($urlParts['host']) && $urlParts['host'] === $allowedDomain) {
return true;
} else {
return false;
}
}
// 예제를 사용합니다
if (validateReferer ( "example.com")) {
// 세션 관련 작업을 수행합니다
} 또 다른 {
// 불법 소스, 액세스 거부 또는 프롬프트 오류
}
각 세션에 대해 고유 한 토큰을 생성하고 클라이언트가 요청할 때 휴대 한 다음 서버 측에서 토큰의 일관성을 확인하여 위조 요청을 방지하십시오.
// 토큰을 생성합니다 함수 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>에코 '<form method="post"> ';;<br> 에코 '<input type="hidden" name="csrf_token" value="' . $token . '"> ';;<br> 에코 '<input type="submit" value="제출하다"> ';;<br> 에코 '</form> ';;</p> <p>// 요청 처리에서 확인하십시오<br> if (isset ($ _ post [ "csrf_token"]) && validateToken ($ _ post [ "csrf_token"]) {<br> // 토큰이 유효하고 작업을 수행합니다<br> } 또 다른 {<br> // 토큰이 유효하지 않고 작동이 거부됩니다<br> }<br>
쿠키 속성을 합리적으로 설정하고 요청 소스 도메인을 확인하고 토큰 메커니즘을 채택함으로써 PHP 세션의 크로스 도메인 공격 위험을 효과적으로 보호 할 수 있습니다. 실제 개발에서 특정 비즈니스 시나리오를 결합하고 보안 취약점에 계속주의를 기울이고 정책을 적시에 업데이트하여 사용자 데이터 및 개인 정보 보호 보안을 보장하는 것이 좋습니다.