Chi e cosa stai cercando di evitare?
Se stai cercando di proteggere i valori della stringa di query da un utente malintenzionato che sta tentando di intercettare il traffico tra te e un utente valido, utilizza HTTPS. In questo caso, la messa in sicurezza dello strato di trasporto ti darà la maggior parte del botto e sarà il modo più semplice e diretto per implementarlo. Gli hacker non saranno in grado di dare un senso a qualsiasi cosa tu stia inviando avanti e indietro, tanto meno i singoli parametri passati nella tua stringa di query.
Se stai cercando di proteggere i valori della tua stringa di query da un utente malintenzionato della tua applicazione, allora penso che probabilmente stai andando nel modo sbagliato. Innanzitutto, devi considerare il fatto che, per consentire al client di inviarti una stringa di query crittografata, dovranno prima creare una stringa di query crittografata. Come possono farlo senza sapere in modo specifico quali parametri e valori devono essere crittografati? Nel caso di un'app Web, impedire a un utente di vedere quale logica stai utilizzando per creare e crittografare una stringa di query sarebbe quasi impossibile.
In secondo luogo, devi chiederti perché è così pericoloso per un utente essere in grado di manipolare questa stringa di query come meglio ritengono opportuno? Una ragione potrebbe essere che sono in grado di vedere le informazioni per le quali non sono autorizzati. Ad esempio, potrei modificare carId
con un valore arbitrario 123, e quindi ottenere accesso illegale alle informazioni su quell'auto. Anziché evitarmi di inviarti quel numero, controlli la richiesta quando arriva e convalidi se sono effettivamente autorizzato a vedere quei dati. In caso contrario, non inviarlo, è così semplice.
Se un utente è in grado di trasferire valori che potrebbero in qualche modo interrompere l'app, allora la risposta è di convalidare e disinfettare il tuo input. Se mi passa carId=-1
o carId=DROP+TABLE+[Cars]
fa esplodere il tuo database, quindi assicurati semplicemente di non accettare quei valori! If carId <=0 throw new ArgumentException("carId")
per esempio.