获取Nginx HttpSecureLinkModule 403的工作

kfgdxczn  于 2023-08-03  发布在  Nginx
关注(0)|答案(2)|浏览(110)

我正在试着把一个坏掉的(?)脚本的视频工作,我有问题得到403的返回,如果直接链接使用,而不是过期链接。
我现在可以得到的URL的安全/隐藏和到期像这样; domain.org/media/X2lkdmFSZHZ1MU40dmhnM3E0V2lNQQ,1370948784/flv/38.flv
文件在/home/srv/public_html/media/videos/flv下
但是,如果你知道正确的路径,视频文件可以直接从URL获得;domain.org/media/vidoes/flv/38.flv
下面是创建安全链接并为flv文件提供渐进流的相关代码部分。

$config['nginx_key'] = 'TOPSECRET';
$config['nginx_prefix'] = '/media/';

$file_sd = '/flv/' .$video_id. '.flv';
$time = time()+ 3600;
$md5hash_sd = md5($time . '.' . $file_sd .'.' . $config['nginx_key'], true);
$md5hash_sd = str_replace('=', '', strtr(base64_encode($md5hash_sd), '+/', '-_'));

// return result
$SD_URL = $config['BASE_URL'].$config['nginx_prefix']. $md5hash_sd . ',' .$time .$file_sd;

result; domain.org/media/X2lkdmFSZHZ1MU40dmhnM3E0V2lNQQ,1370948784/hd/38.mp4

字符串
这些是nginx的规则;

location ~ ^/media/(?<secure>[\w\-=]+,\d+)(?<file>/.*\.flv)$ {
secure_link $secure;
secure_link_md5 $secure_link_expires.$file.TOPSECRET;
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
alias  /home/srv/public_html/media/videos$file;
flv;
}


我的问题是,如果有人试图直接访问flv文件而不是最终会过期的安全链接,有人能在这里看到我如何不能返回403。403是唯一不起作用的部分。
谢谢你抽出时间- D.R

bnlyeluc

bnlyeluc1#

location ~ /media/(.+)\.flv$ {
root /srv/www/public_html;
deny all;
}

字符串
这将阻止指向任何.flv文件的直接链接,同时允许脚本正常生成哈希URL。
/media/Q9 nb 0 mU 7vLxkpR 55 GXehnA,1371541450/flv/37.flv -好的
/media/path/to/flv/37.flv - denied 403.

nbewdwxp

nbewdwxp2#

location /media/ {
        deny all;
        return 403;
    }

字符串
加上这个。

相关问题