我试图创建Nginx的有限时间的链接...Nginx的TTL SecurLink不工作
我有一个PHP脚本,将时间和SECRETCODE一个md5hash的URL,然后nginx的应该是阅读和比较该时间看看链接是否应该活着或者没有...因为它是不工作的......它会返回所有具有$ st和$ arg_e的403所有内容我有一个服务器人,所以nginx的东西是不是我的(他说),即时通讯不是最好的...所以我需要你的帮助,如果你可以...
这是PHP脚本,我运行所有的流量通过追加秘密码和超时参数...这基本上是一个脚本来添加令牌“& ST =”和“& E =”的URL
<?php
$params = $_SERVER['QUERY_STRING'];
define(URL_TIMEOUT, 120); # 2min timeout
$secret = "xxxmysecretxxx";
$time = pack('N', time() + URL_TIMEOUT);
$timeout = bin2hex($time);
$hashmac = md5($secret.$time);
$url = "http://mytracker.net"."/".$params."&st=".$hashmac."&e=".$timeout;
header('location: '.$url);
//echo $url;
?>
这里是Nginx的配置与规格为/保护文件夹
location /protected {
secure_link_md5 xxxmysecretxxx$arg_e;
secure_link $arg_st,$arg_e;
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 403;
}
location ~ \.php$ {
secure_link_md5 xxxmysecretxxx$arg_e;
secure_link $arg_st,$arg_e;
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 403;
}
#try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
想知道我做错了什么会有所帮助吗?
的期望是,服务器会检查时间戳对当前时间,如果从哈希创建那么时间过去2分钟显示403,如果不显示页面...
请帮腔...
甜,我认为工作!我现在看到的页面,它似乎链接是活着的2分钟...你不会知道额外的时间,这将增加一个重定向,你会吗?另外,你会改变关于nginx配置的任何东西吗?将不胜感激。 – user3707960 2014-08-27 14:50:50
对不起,我不明白第一个问题。 nginx配置包含两次相同的部分。还应该在'secure_link_md5'内使用'$ secure_link_expires'作为时间戳,而不是'secure_link'中指定的变量。也许你还应该把'$ uri'加入校验和中,以加强安全性。 – GhostGambler 2014-08-27 18:30:04
我的第一个问题是什么意思,你认为多少开销时间被纳入md5hash? IE浏览器。你认为这个过程增加了多少毫秒才能进入页面? – user3707960 2014-08-28 05:09:28