Question

Si j'ai un portail que j'utilise pour accéder à d'autres sites Web.

Dis que j'ai un portail A .Et je veux accéder au site Web B.

Si B a besoin d'informations critiques pour fonctionner comme username .Je veux transmettre ces informations en toute sécurité.


donc je fais un formulaire comme ceci :

 <%--------------------------------------------------------------------------------------%>
    <form id="frm_sal" action="B URL the first page" method="post">
    <input id="hdn_sal_Emp_Num" type="hidden" runat="server" name="hdn_sal_Emp_Num" />
    <input id="hdn_sal_user_name" type="hidden" runat="server" name="hdn_sal_user_name" />
    <input id="hdn_sal_result" type="hidden" runat="server" name="hdn_sal_result" />
    </form>
  <%--------------------------------------------------------------------------------------%>

et dans le cas où le client clique sur un lien dans le portail A , je me soumettrai à ce formulaire .

Un formulaire pour chaque site Web.

Ma question porte sur la façon de sécuriser ces données et d'empêcher leur falsification.

Était-ce utile?

La solution

Chiffrer les informations dans un <form> avant de l'envoyer au client, puis déchiffrez-le à l'autre bout à l'aide d'une clé privée.

Voici un bon exemple de cryptage. Chiffrer et décrypter une chaîne

Voici quelque chose que j'aime faire.Créez une classe appelée « SharedSession » et ajoutez les propriétés que vous souhaitez partager. Les propriétés peuvent même être d'autres classes.Ajoutez également une propriété d'horodatage.Sérialisez la classe dans une chaîne Json (Json.net), chiffrez-le et placez-le dans un champ de formulaire.

Lorsque le formulaire est publié de l'autre côté, désérialisez-le en tant que classe « SharedSession ».

Utilisez le champ d'horodatage pour deux raisons :

1) pour donner l'impression que les données cryptées changent toujours.Par exemple, si vous envoyez encore et encore les mêmes informations d'identification à l'utilisateur actuel, la chaîne chiffrée ne changera jamais, donc l'horodatage force la chaîne chiffrée à apparaître différente à chaque fois.

2) pour vous assurer que les données publiées ne sont pas périmées ou anciennes.Définissez un seuil d’environ 1 minute environ.Si les données datent de plus d’une minute, jetez-les.

EDIT

Une autre chose...n'appelez pas votre champ de formulaire caché « SharedSessionData » ou quoi que ce soit qui pourrait intéresser un pirate informatique.Appelez cela quelque chose comme « données publicitaires promotionnelles » pour les rejeter.

J'espère que cela t'aides.

Autres conseils

Cela peut fonctionner de plusieurs manières.

La première serait de chiffrer la chaîne de requête d'une manière ou d'une autre, mcrypt vient à l'esprit, qui est décemment pris en charge sur plusieurs plates-formes, cela dépend du fait que la personne ne casse pas votre sel/phrase secrète, cela peut être atténué en changeant fréquemment le sel.L'autre problème que vous rencontrez est une attaque par réponse, c'est-à-dire lorsque quelqu'un copie et colle l'URL d'un utilisateur dans un autre navigateur, copiant essentiellement la demande.Cela peut être atténué en utilisant une date/heure dans l'URL ainsi qu'un jeton unique qui ne peut pas être réutilisé.

L'autre façon serait que les deux serveurs communiquent, lorsque vous envoyez un utilisateur d'un site à un autre, vous envoyez des données (avec un jeton/guid unique) via un protocole de communication serveur d'une manière ou d'une autre (SOAP, REST, quelque chose d'inventé) puis donnez simplement à l'utilisateur le jeton à transmettre.

À moins que le site Web ne soit interne, vous devez toujours éviter de le verrouiller via une adresse IP, de nombreux utilisateurs ont plusieurs adresses IP et utilisent diverses règles pour répartir les données le long des adresses IP afin de pouvoir les modifier en cours de requête, et même certains grands FAI (AOL en est un) forcer les utilisateurs à utiliser des proxys dotés de plusieurs points de terminaison et d'adresses différentes.

La dernière option serait d'avoir une banque de données partagée, c'est-à-dire une base de données avec laquelle les deux serveurs Web peuvent « communiquer » afin d'interroger les informations de l'utilisateur.Ceci est facilité s'ils se trouvent sur le même domaine, vous pouvez donc définir un cookie de session qui fonctionne sur les deux sites. Sinon, vous devez revenir au jeton unique transmis.

Dans Transmettez les données de page en page en toute sécurité un utilisateur décrit la création d'une classe personnalisée pour conserver vos données sensibles et les placer dans le cache.Je pense que vous pouvez également utiliser une session pour accomplir ce dont vous parlez, qui est discuté ici : Comment passer un champ caché d'une page à une autre ?

Je crois qu'il existe plusieurs façons et je ne pense pas être suffisamment compétent pour vous dire laquelle est la meilleure, mais j'espère que les liens que j'ai fournis vous orientent dans la bonne direction !

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top