我試圖創建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