所以我的问题很简单,香港专业教育学院使用以下方法允许通过引荐来源网址访问php脚本,但我只想允许与完整URL匹配的引荐来源进行访问。

<?php
if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != 'domain.com')
{
echo "Eexcuting code here";
} else {
echo('Hot Linking Not Permitted');
// display some message / image / video
exit;
}
?>

因此,如果引荐来源网址与http://www.domain.com/page.html相匹配,则允许访问其他网址(如果将其阻止)。

最佳答案

这是不安全的,因为引荐来源网址的数据很容易被欺骗。但是,如果它仍然适合您的需求,那么您应该已经对您的代码感到满意,因为$_SERVER['HTTP_REFERER']包含完整的引荐来源网址,而不仅仅是域名。实际上,您当前的代码需要进行一些调整,因为它不能那样工作:

<?php
// This is to check if the request is coming from a specific domain
$ref = $_SERVER['HTTP_REFERER'];
$refData = parse_url($ref);

if($refData['host'] !== 'domain.com') {
  // Output string and stop execution
  die("Hotlinking not permitted");
}

echo "Executing code here";
?>

请注意,如果您在检查HTTP_REFERER是否已设置之前就检查是否已设置HTTP_REFERER,那么人们将无需设置任何引荐来源就可以直接访问您的脚本,因此无论如何都应对其进行检查。现在,检查特定的URL更加简单:
<?php
// This is to check if the request is coming from a specific URL
$ref = $_SERVER['HTTP_REFERER'];

if($ref !== 'http://domain.com/page.html') {
  die("Hotlinking not permitted");
}

echo "Executing code here";
?>

关于PHP仅允许访问特定的引荐来源网址/页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14854117/

10-11 18:03