2012-01-14 1 views
5

Je travaille sur un site Asp.Net MVC 3/knockout.js pour plusieurs utilisateurs où ils peuvent enregistrer des informations sur leurs sites Web Voici une version simple de le modèleMeilleure pratique pour gérer l'enregistrement sécurisé via Ajax posts asp.net MVC 3

class{ 
string Id 
string Name 
string Url 
string Description 
} 

Je veux construire une interface utilisateur très réactive afin que toutes les économies de chargement, etc, se feront par Ajax. Par conséquent, le scénario est lorsqu'un utilisateur a ajouté certains sites Web à sa liste et clique sur Enregistrer une chaîne JSON est envoyée à une méthode Action dans un contrôleur.

Tout fonctionne bien.

problème est:

Comment puis-je assurer que l'utilisateur n'a pas falsifié l'identifiant et économise réellement des informations sur un autre site Web des utilisateurs?

Id est bien sûr hiddden, mais toute personne malveillante ayant des connaissances sur le web peut facilement changer l'identifiant.

+0

N'avez-vous pas authentifié l'utilisateur plus tôt? Vous ne pouvez pas utiliser l'identité de l'utilisateur? –

Répondre

2

Vous devez utiliser l'authentification. Décorez l'action qui effectuera la mise à jour avec l'attribut Authorize. Cela garantira que l'utilisateur qui envoie la requête AJAX est authentifié et qu'il ne peut pas changer son nom d'utilisateur. Ensuite, vous allez vérifier dans votre base de données si l'identifiant du site qu'il essaie de mettre à jour lui appartient. Vous aurez bien sûr une table qui contiendra la cartographie entre les utilisateurs et les sites. Si l'utilisateur altère l'ID du site et met une certaine valeur d'un site qui ne lui appartient pas, vous dans l'action du contrôleur le détectera lorsque vous effectuez la requête pour vérifier si un ID de site donné appartient à une donnée donnée. Nom d'utilisateur. Il ne peut pas altérer son nom d'utilisateur car il est stocké dans un cookie d'authentification chiffré, à moins bien sûr qu'il se connecte avec un nom d'utilisateur différent, auquel cas il connaît déjà le mot de passe.

Questions connexes