Domanda

Esiste un modo affidabile per determinare la provenienza di un utente in un'applicazione ASP.NET? Abbiamo un'applicazione web collegata da due posizioni diverse. I due collegamenti si trovano su domini separati e devono imporre determinate autorizzazioni utente all'interno di questa app. Ecco cosa ho provato finora ...

  • Uso di Request.UrlReferrer (che è il Referer intestazione HTTP). Questo ha sempre restituito una stringa vuota. Credo che ciò sia dovuto al fatto che i collegamenti ipertestuali utilizzano Javascript per avviare una finestra popup. Sulla base delle mie ricerche, l'agente utente fornisce questa intestazione HTTP su collegamenti ipertestuali standard. I popup Javascript sono una storia diversa (evidentemente).

  • Una semplice stringa di query per indicare il referrer. Questa non è davvero un'opzione perché abbiamo bisogno di qualcosa che non è così facile da bypassare (più sicuro).

Qualche idea? Capisco che nel grande schema delle cose, questo potrebbe avere un miglior design / struttura generale. Per favore, non pubblicare una risposta che suggerisce di riprogettare tutto, perché non è un'opzione.

È stato utile?

Soluzione

Non esiste un modo affidabile per dire da dove provenga un utente e questa non è solo una limitazione ASP.NET, ma tutte le applicazioni web in generale. Il referrer dell'URL può essere facilmente falsificato, quindi non è affidabile. Penso che l'opzione migliore potrebbe essere un parametro url crittografato o un cookie, se preferisci.

Quindi entrambe le pagine dovrebbero concordare su chiavi private comuni.

  1. Pagina1 utilizzerà la chiave per crittografare il suo indirizzo e passarlo a Pagina2
  2. Pagina2 verificherà la presenza di questo parametro e proverà a decrittografarlo con la stessa chiave privata utilizzata per crittografare
  3. Se ciò ha esito positivo, significa che Page2 sarà in grado di determinare chi l'ha chiamato, in caso contrario, i dati sono stati manomessi

Altri suggerimenti

Senza che il browser passi un referrer o usi la querystring come descrivi, non c'è modo di saperlo.

Un'altra opzione è avere due diverse landing page sull'applicazione ASP.NET. Le landing page possono impostare le opzioni di sicurezza e quindi reindirizzare a una homepage comune. Questo è un po 'più sicuro dell'opzione Querystring.

In alternativa, è possibile posizionare un'immagine di 1x1 pixel nei siti di riferimento estratti dal sito dell'applicazione ASP.NET. Il referrer deve essere passato allo script e puoi quindi impostare un cookie sul computer degli utenti a cui puoi fare riferimento quando accedono alla home page dell'app.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top