웹 개발에서, 참조는 요청의 소스 페이지를 식별하는 HTTP 요청 헤더의 일부입니다. 참조자를 확보하면 도난 방지 링크, 사용자 소스 통계 및 기타 기능을 실현할 수 있습니다. 그러나 http_referer 자체가 쉽게 위조 될 수 있으므로 보안 요구 사항이 높을 때 완전히 신뢰할 수있는 것은 아닙니다.
http_referer가 변조 될 수 있으므로 세션 이나 쿠키를 사용하여 요청이 지정된 페이지에서 오는지 여부를 결정하는 것이 더 안전합니다. 다음은 샘플 코드에 의해 입증됩니다.
<!DOCTYPE html> <html> <body> <form action="determineuser.php" method="post" align="center"> <input type="submit" name="click" value="세션을 통해 사용자 요청을 결정합니다"/> </form> <?php session_start(); // 열려 있는 Session $setsession = uniqid(mt_rand(), TRUE); // 고유 식별자를 생성하십시오 $_SESSION['set'] = $setsession; $redirect = "determineuser.php?set={$setsession}"; // 전달 가능 Session 심벌 마크 echo "<h1 align='center'> "; Echo "현재 세션은 다음과 같습니다.". $ _ 세션 [ 'set']; // 세션이 페이지에 표시됩니다 에코 "</h1> "; ?> </body> </html>
<?php session_start(); // 조사하다 Session 제출 및 양식 if ( (isset($_SESSION['set']) && $_SESSION['set'] === TRUE) || isset($_POST['click']) ) { echo "Determined Last visited page on the server using HTTP REFERER:<br> ". $ _ server [ 'http_referer']; 에코 "<h1 align='center'> "; 에코 "<p> 이것은 세션을 사용하여 참조자를 결정하는 안전한 방법입니다.</p> "; echo $ _session [ 'set']; // 세션이 Echo와 일치하는지 확인하십시오. "</h1> "; } 또 다른 { // 소스를 결정할 수 없으면 userRequest.php로 리디렉션 헤더 ( '위치 : userrerequest.php'); 출구; } ?>
안전하지는 않지만 소스를 직접 결정하기 위해 $ _server [ 'http_referer']를 사용하는 것은 간단합니다. 보안 요구 사항이 높은 시나리오에서는 세션 또는 AJAX를 통해 요청 소스를 확인하여 참조 위조의 위험을 피할 수 있습니다.