2012-01-14 15 views
5

Sto lavorando ad un sito Asp.Net MVC 3/knockout.js per diversi utenti in cui possono salvare informazioni sui loro siti web Ecco una semplice versione di il modelloLe migliori pratiche per gestire il salvataggio sicuro tramite i post Ajax asp.net MVC 3

class{ 
string Id 
string Name 
string Url 
string Description 
} 

voglio costruire una molto reattivo interfaccia utente in modo tutto loading risparmio ecc avverrà mediante Ajax.

Quindi lo scenario si verifica quando un utente ha aggiunto siti Web di som al suo elenco e fa clic su Salva una stringa JSON viene registrata in un metodo Action in un controller.

Tutto funziona correttamente.

Il problema è:

Come posso garantire che l'utente non ha manomesso l'id ed è in realtà salvando informazioni su qualche altro sito web gli utenti?

L'ID è ovviamente hiddden, ma qualsiasi persona malvagia con una certa conoscenza del Web può facilmente cambiare l'ID.

+0

Non hai autenticato l'utente in precedenza? Non puoi usare l'identità dell'utente? –

risposta

2

È necessario utilizzare l'autenticazione. Decora l'azione che eseguirà l'aggiornamento con l'attributo Authorize. Ciò assicurerà che l'utente che sta inviando la richiesta AJAX sia autenticato e non può cambiare il suo nome utente. Quindi controllerai nel tuo database se l'ID del sito che sta tentando di aggiornare appartiene a lui. Ovviamente avrai una tabella che conterrà la mappatura tra utenti e siti.

Se l'utente manomette il sito id e mette un certo valore di un sito che non gli appartiene, è in azione di controllo lo rileverà quando si esegue la query per verificare se un determinato sito id appartiene ad un determinato nome utente. Non può manomettere il suo nome utente poiché è memorizzato in un cookie di autenticazione crittografato, a meno che, naturalmente, non firmi con un nome utente diverso, nel qual caso conosce già la password.

Problemi correlati