2011-04-28 3 views
0

J'ai cherché toute la journée pour trouver un moyen de comprendre cela, mais sans succès et je pensais que peut-être quelqu'un ici pourrait aider? J'essaie d'utiliser un mot de passe secrete dans mon fichier .Js mais je ne peux pas l'écrire directement dans le fichier car tout le monde peut le voir lors de l'accès au code source. Par exemple, j'ai besoin d'envoyer ce mot de passe en utilisant ajax sur une autre page pour m'assurer que le HttpRequest provient de mon site web et non pas d'un autre forge httprequest.
Est-ce possible parce que j'ai essayé tout le reste comme les formulaires d'authentification, mais cela n'a pas aidé.
J'utilise asp.net et HttpHandler comme page qui retourne des données.Prévenir forge HttpRequests

+0

La plupart des plates-formes majeures incluent une sorte de jeton antiforgery natif. Cela nous aiderait si nous connaissions le framework Web que vous utilisez. –

+0

ASP.NET 3.5 est ce que vous voulez dire? –

Répondre

0

Ce que vous pouvez faire est de générer une clé valide jusqu'à un temps de jeu en utilisant PHP comme ceci:

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

De cette façon, vous savez quand la clé a été générée, et si elle a été trafiqué parce que:

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"); 
    } 
} 

l'inconvénient est que les gens qui n'actualisez la page très souvent (dans mon exemple c'est 1 heure) leur clé expirera. Un autre problème est que votre «attaquant» pourrait techniquement d'abord gratter une page pour obtenir une nouvelle clé et l'utiliser, et gratter à nouveau quand il expire et ainsi de suite.

Cette solution fonctionne très bien pour la protection contre le hotlinking.

0

Voici comment cela est fait in MVC. Malheureusement, il ne semble pas que la même qualité de sécurité ait été transmise à WebForms (du moins pour autant que je sache).