2013-08-26 89 views
0

我在我的一個網頁中有這個test.php代碼。只有域名的訪問權限

<?php 
ob_start(); 
$links = array(
    'dolhd' => '/dohd.m3u8', 
    'dol1' => '/dol1.m3u8', 
    'dol2' => '/dol2.m3u8', 
    'dol3' => '/dol3.m3u8', 
    'thd' => '/thd.m3u8', 
    't1' => '/t1.m3u8', 
    'test' => 'https://www.youtube.com/watch?v=0OWt8O8pgw0', 
); 

$id = $_GET['id'] ? ($links[$_GET['id']] ? $_GET['id']: 'test') : 'test'; 
header ('Location:'.$links[$id]); 
ob_flush(); 
exit; 
?> 

頁是從這樣的test.php?id=dol1瀏覽器訪問,結果被下載文件dol1.m3u8

我想知道是否有可能該頁面只從另一個頁面被訪問同一個域名。

或者阻止除域之外的所有ip-s的訪問。

+0

您可以通過引用'$ _SERVER ['REMOTE_ADDR']'中的某個IP地址,通過域的IP來限制對此頁面的訪問 - 這是最可靠的選項。 –

+0

怎麼做? –

+0

你不能這麼做......因爲誰應該打開該鏈接?誰的域名? – 2013-08-26 12:02:30

回答

0
if ($_SERVER["HTTP_REFERER"]!=="your.domain.here"){ 
//redirect or whatever - referrering url not from this domain 
      }else{ 
ob_start(); 
$links = array(
    'dolhd' => '/dohd.m3u8', 
    'dol1' => '/dol1.m3u8', 
    'dol2' => '/dol2.m3u8', 
    'dol3' => '/dol3.m3u8', 
    'thd' => '/thd.m3u8', 
    't1' => '/t1.m3u8', 
    'test' => 'https://www.youtube.com/watch?v=0OWt8O8pgw0', 
); 

$id = $_GET['id'] ? ($links[$_GET['id']] ? $_GET['id']: 'test') : 'test'; 
header ('Location:'.$links[$id]); 
ob_flush(); 
exit; 
} 

只是讓確保你有「your.domain.here」與域所需的字符串替換。更多信息 - >http://php.net/manual/en/reserved.variables.server.php

+0

不,你不能依靠'HTTP_REFERER'的值來確保安全性,因爲它是由_client_發送的 - 因此,當我進入adress的時候,它可能是假的 –

+0

它的工作很好。但是當我從另一個頁面請求時,它也不起作用。這不好! –

+0

回顯http_referer的輸出並檢查使用相同的格式。我敢打賭,安全方面有更好的方法,但是這樣做可以用於原型/測試,直到找到更有效的解決方案。 – Mud

0

把你的重定向文件頭和更改IP地址與你:

<?php 
$allow = array("192.168.10.1", "192.168.10.2", "192.168.10.3"); 

if (!in_array($_SERVER['REMOTE_ADDR'], $allow)) { 
    echo "Your access denied!"; 
    exit(); 
} 
?>