2011-04-28 17 views
0

私はこのことを理解する方法を見つけるために一日中検索してきましたが、成功せず、ここの誰かが助けてくれるかもしれないと思いましたか? 私の.Jsファイルでは秘密のパスワードを使用しようとしていますが、ソースコードにアクセスすると誰もがそれを見ることができるため、ファイルに直接書き込むことはできません。たとえば、このパスワードを別のページにajaxを使用して送信して、HttpRequestが別の偽造httprequestからではなく私のWebサイトから取得していることを確認する必要があります。
これは可能ですか?認証フォームのようなものはすべて試しましたが、それは役に立たなかったからです。
私はasp.netとHttpHandlerをデータを返すページとして使用しています。forgeのHttpRequestsを防ぐ

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

キーが生成された時に知って、それがために改ざんされていた場合、この方法は:あなたは何ができるか

+0

ほとんどの主要なプラットフォームには、何らかの種類のネイティブの偽造防止トークンが含まれています。あなたが使用しているWebフレームワークを知っていれば役に立ちます。 –

+0

ASP.NET 3.5の意味は? –

答えて

0

はそうのようなPHPを使用して設定された時間までの有効なキーを生成します:

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時間です)、そのページをリフレッシュしない人が期限切れになることです。

もう1つの問題は、あなたの「攻撃者」が技術的に最初にページをこすって新しいキーを取得し、それを使用し、期限切れになったときに再度スクラップできることです。

このソリューションは、ホットリンクからの保護に非常に適しています。

0

これは完了です。in MVCです。残念ながら、WebFormsと同じセキュリティの良さは(少なくとも私が知る限りは)見えません。

関連する問題