2014-10-07 2 views
0

하나 이상의 사이트에서 http refer를 허용하는 방법을 알고 싶습니다. 예를하나 이상의 사이트에서 http 리퍼러를 허용하는 방법

<?php 
$domain='example.net'; 
$referrer = $_SERVER['HTTP_REFERER']; 
if (@preg_match("/example.net/",$referrer)) { 
} else { 
header('Location: http://www.example.net/404.php'); 
}; 
?> 

내가 example.net에서 링크를 열 경우이 코드는 작동하지만이 링크에 액세스 할뿐만 아니라 example1.net 및 example2.net을 허용 할 들어

.

어떻게하면됩니까? 아무도 이걸 가지고 나를 도울 수 없으면 크게 감사하겠습니다.

+0

매우 쉽게 스푸핑 될 수 있습니다. – Ohgodwhy

+0

위의 코드에서 $ domain 변수는 어디에도 사용되지 않습니다. –

답변

0

를 사용하여 정규식에 대한 운영자 또는 - | (파이프) 당신의 목표는 그 보안 방법 리퍼러에 존재하지 않는 한이 페이지에 액세스 사람들을 제지하는 경우, 그것은 주목해야한다

<?php 
$domains = Array(
       'example.net', 
       'example2.net' 
      ; 
$referrer = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST); // Gets the domain name from referer 
if (!preg_match("/" . implode('|', $domains) . "/", $referrer)) { 
    header('Location: http://www.example.net/404.php'); 
    exit(0); //force exit script after header redirect to ensure no further code is executed. 
}; 

// Normal code execution here. 
?> 
+0

정말 감사합니다. – user3522662

+0

문제 없습니다. 나는 당신의 코드를 기초로이 작업을 수행하는 약간 더 나은 방법을 추가하기위한 해답을 편집했다. –

관련 문제