>백엔드 개발 >PHP 튜토리얼 >사이트 간 요청 위조를 방지하기 위해 PHP 형식에서 HTTP Referer를 설정하는 방법

사이트 간 요청 위조를 방지하기 위해 PHP 형식에서 HTTP Referer를 설정하는 방법

WBOY
WBOY원래의
2023-06-25 19:23:051936검색

인터넷의 급속한 발전과 점점 더 복잡해지는 사용자 요구로 인해 웹 애플리케이션의 요구 사항과 기능이 점점 더 복잡해지고 다양해졌습니다. 그러나 이는 또한 점점 더 눈에 띄는 웹 보안 문제로 이어졌습니다. 일반적인 공격 방법 중 하나는 크로스 사이트 요청 위조(CSRF) 공격입니다.

간단히 말하면, CSRF 공격은 공격자가 특정 사이트에서 합법적인 사용자의 신원 인증을 이용해 사용자의 신원을 사칭하고 사용자의 허락이나 인지 없이 사용자의 이름으로 특정 작업을 완료하는 공격 형태입니다. . URL, iframe, 사진 등을 통해 악의적인 요청을 보내는 등 일반적인 공격 방법이 많이 있습니다. PHP 형식에서 HTTP Referer를 설정하는 것은 CSRF 공격을 방지하는 효과적인 방법입니다.

그렇다면 PHP 형식에서 HTTP Referer를 설정하는 방법은 무엇입니까?

HTTP 리퍼러는 요청을 보내기 전에 브라우저가 현재 페이지의 소스 주소, 즉 요청 소스를 확인한다는 것을 의미합니다. 요청 소스가 서버에서 수신한 요청의 소스 주소와 동일한 경우 해당 요청은 합법적인 것으로 간주됩니다. 따라서 HTTP Referer를 설정하면 양식에 보호 계층을 추가하고 양식 제출 소스 주소를 제한하여 CSRF 공격을 효과적으로 방지할 수 있습니다.

구체적인 설정 과정은 다음과 같습니다.

1. 양식 페이지에 다음 코드를 추가합니다.

<?php 
session_start();
$token = md5(uniqid(rand(), TRUE)); 
$_SESSION['csrf_token'] = $token;
?>
<form action="" method="post">
    <input type="hidden" name="csrf_token" value="<?php echo $token; ?>">
    //其他表单元素
    <input type="submit" value="提交">
</form>

먼저 양식 페이지에서 세션을 연 다음 CSRF 토큰으로 임의의 토큰을 생성하여 세션. 숨겨진 요소에 토큰을 할당하고 양식 요소의 일부로 양식과 함께 서버에 제출합니다.

2. 그런 다음 양식 처리 페이지에 다음 코드를 추가합니다.

session_start();
if($_POST['csrf_token'] != $_SESSION['csrf_token']) {
    //不合法的请求
    exit("非法请求!");
}
//处理表单数据之前。...

양식 처리 페이지에서 먼저 세션을 연 다음 양식의 csrf_token을 이전에 세션에 저장된 토큰과 비교합니다. 토큰이 일관되지 않으면 제출이 불법으로 간주되어 핸들러가 종료됩니다. 그렇지 않으면 양식 데이터가 정상적으로 처리될 수 있습니다.

요약하자면, PHP 양식에서 HTTP Referer를 설정하는 것은 어렵지 않습니다. 양식 페이지에서 임의의 CSRF 토큰을 생성하고 이를 세션에 저장한 다음 양식의 토큰과 세션이면 충분합니다. 이렇게 하면 사이트 간 요청 위조 공격을 효과적으로 방지할 수 있습니다.

위 내용은 사이트 간 요청 위조를 방지하기 위해 PHP 형식에서 HTTP Referer를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.