跟踪文件请求引荐来源网址


Track file request referrer

我在服务器上有一个文件,例如"file.txt"。可以从不同的域请求它。

有没有办法跟踪从哪个域请求此文件并将此数据保存在某个地方?

我不认为域名会是你最好的选择..我建议你坚持IP address for限制

您还可以使用 $_SERVER ['HTTP_REFERER'] 来验证调用文件或即将加载文件的确切脚本

尝试

$allowedReferer = array (
        "http://me.test.com/xxx/bbb/zmy.php?",
        "https://me.why.com/xxx/bbb/zmy.axpx" ,
        "http://localhost/lab/stockoverflow/"
);
$allowedIP = array (
        "192.168.0.1",
        "192.168.0.1" ,
        "::1"
);
$file = "file.pdf"; // its can also be a value form $_GET
if (! in_array ( quickIP (), $allowedIP )) {
    die ( "IP LockDown : " . quickIP () );
}
if (! isset ( $_SERVER ['HTTP_REFERER'] )) {
    die ( "Missing Referer" );
}
if (! in_array ($_SERVER ['HTTP_REFERER'] , $allowedReferer)) {
    die ( "Referer Lockdown "  . $_SERVER ['HTTP_REFERER']);
}
$array = parse_url ( $_SERVER ['HTTP_REFERER'] );
header ( 'Content-type: application/pdf' );
header ( 'Content-Disposition: attachment; filename="' . $file . '"' );
readfile ( $file );
function quickIP() {
    return (empty ( $_SERVER ['HTTP_CLIENT_IP'] ) ? (empty ( $_SERVER ['HTTP_X_FORWARDED_FOR'] ) ? $_SERVER ['REMOTE_ADDR'] : $_SERVER ['HTTP_X_FORWARDED_FOR']) : $_SERVER ['HTTP_CLIENT_IP']);
}

是的,只需获取引用并存储它。变量为 $_SERVER['HTTP_REFERER']

您有两个选择。要么你编写一个PHP脚本来提供文件(http://teddy.fr/blog/how-serve-big-files-through-php),并使用PHP存储引用。

或者,Web 服务器保留所有访问文件的日志。您可以扫描此(结构化)日志以访问您的文件并找出引用者。有几个日志分析项目,如AWStats。