2011-04-28 96 views
0

我一直在尋找一種方法來解決這個問題,但沒有成功,我想也許這裏有人可以幫忙嗎? 我想在我的.Js文件中使用一個祕密密碼,但是我不能直接在文件中寫入它,因爲每個人都可以在訪問源代碼時看到它。例如,我需要使用ajax將此密碼發送到另一個頁面,以確保HttpRequest來自我的網站而不是另一個僞造的httprequest。
這是可能的,因爲我已經嘗試了其他所有認證表單,但沒有幫助。
我使用asp.net和HttpHandler作爲返回數據的頁面。防止僞造HttpRequests

+0

大多數主要平臺都包含某種本地防僞令牌。如果我們知道您使用的是什麼Web框架,這將有所幫助。 – 2011-04-28 20:50:45

+0

ASP.NET 3.5是你的意思嗎? – 2011-04-28 20:52:19

回答

0

你可以做的是生成密鑰使用PHP等,從而有效達到設定時間:

$password = "some random string"; 
$key = md5($password . $_SERVER['REQUEST_TIME']) . "|" . $_SERVER['REQUEST_TIME']; 

你知道什麼時候被生成的密鑰通過這種方式,如果它被篡改的原因是:

function check($key) { 
    list($hash, $timestamp) = explode("|", $key, 2); 
    if ($hash !== md5($password . $key)) { 
     throw new Exception("Naughty!"); 
    } 
    if ($timestamp < $_SERVER['REQUEST_TIME'] < 60*60) { 
     throw new Exception("too old"); 
    } 
} 

不好的一面是不經常刷新頁面的人(在我的例子中是1小時)他們的密鑰將過期。

另一個問題是,你的'攻擊者'在技術上可能會先刮一個頁面來獲得一個新的密鑰並使用它,並在到期時再次擦除等等。

該解決方案非常適合防止盜鏈。

0

這是如何完成的in MVC。不幸的是,它看起來並沒有像WebForms一樣的安全性(至少據我所知)。