Je suis crypté en utilisant AES et passant en chaîne de requête, Html.Encode convertira-t-il correctement tous les caractères de sorte que l'appel de Decode produira la même chaîne?Crypté avec AES et passant dans la chaîne de requête, Html.Encode va-t-il fonctionner?
Répondre
Le codage HTML est différent du codage d'URL. L'encodage HTML est utilisé lorsque vous souhaitez générer une URL dans un document HTML. Il échappe aux trucs HTML. Pour générer une URL dans une page HTML, vous devez d'abord encoder les URL pour générer une URL valide, puis l'encoder au format HTML lorsque vous souhaitez l'écrire dans une page HTML.
Utilisez HttpUtility.UrlEncode
. Alternativement, vous pouvez d'abord convertir le byte[]
en base64 en utilisant Convert.ToBase64String
, puis l'encoder en utilisant HttpUtility.UrlEncode
. Il est susceptible de générer une URL plus courte.
L'appel HttpUtility.UrlEncode
avant de le mettre dans la chaîne de requête le codera correctement.
Du côté de la réception, la propriété QueryString décode déjà les valeurs, de sorte que vous ne devriez pas appeler toutes les méthodes de décodage (autres que Convert.FromBase64String
)
AES dans un mode crypte orientée octet. Pour transmettre des octets dans la chaîne de requête, vous devez le convertir en texte. Une façon de le faire est d'utiliser Convert.ToBase64String().
Une fois qu'il a été converti en texte, vous devez vous assurer que tous les caractères non alphanumériques sont encodés correctement via UrlEncode(). Du côté de la réception si UrlDecoded() est déjà reçu, vous devriez être capable de convertir le texte en un flux d'octets crypté via Convert.FromBase64String() puis décrypter le tableau d'octets résultant.
je tente de faire la même chose, et a trouvé la réponse ici:
Encrypting a value using MySQL's AES_ECRYPT function, then passing it in a URL string, using PHP
Les barres obliques peuvent causer des problèmes, même lorsque l'URL codé. La solution qui fonctionne pour moi est de convertir en hexadécimal, le passer par l'URL, puis revenir en binaire avant de décrypter.
- 1. localisation Html.Encode avec ASP.NET MVC
- 2. server.Transfer avec la chaîne de requête
- 3. Comment utiliser Html.Encode avec Html.Texbox dans Asp.net MVC?
- 4. Paramètres de chaîne de requête et falsification
- 5. javax.crypto.IllegalBlockSizeException dans le cryptage AES
- 6. Axis 1.4: impossible de faire fonctionner la requête SOAP
- 7. Linq Requête sur int utilisant la chaîne
- 8. Problème avec une barre oblique dans une chaîne de requête
- 9. la requête concernant la chaîne de dsn dans vba
- 10. htaccess réécriture pour la chaîne de requête
- 11. Chaîne de requête css
- 12. ASP.NET - Comment faire pour supprimer la chaîne de requête après/avant? à partir du paramètre ASPX passant?
- 13. Obtenir la chaîne de requête complète SolrQuery
- 14. mod_rewrite: périodes de URI passées dans la chaîne de requête
- 15. Réécrire chaîne de requête
- 16. Vérifier la chaîne de requête (PHP)
- 17. Comment donner une valeur de chaîne dans la requête?
- 18. get chaîne de requête dans js/jquery
- 19. Problème avec la requête linq2sql
- 20. comment passer la chaîne de requête cryptée dans asp.net
- 21. Cryptage AES, exemple de code
- 22. Quelles mines de sécurité dois-je surveiller avec JCA et AES?
- 23. PostbackUrl et le paramètre de chaîne de requête
- 24. Requête SQL - Permutations de chaîne
- 25. Spinning PDF en passant un URL et $ _GET paramètres?
- 26. Comment passer les résultats de la requête avec les relations FK (EF) à la vue
- 27. référence non définie à fonctionner modèle lorsqu'il est utilisé avec la chaîne (GCC)
- 28. mod_rewrite pour obtenir la chaîne de requête PHP
- 29. NHibernate: Convertir Guid en chaîne dans la requête
- 30. Longueur maximale de la chaîne de requête dans une requête AJAX GET?
Ma chaîne cryptée contient un +, et il semble que le + soit perdu pendant le codage/décodage de l'url. Est-ce possible? –
(Je fais d'abord un ToBase64String puis je l'encode.) –
UrlEncoding doit encoder + à sa valeur équivalente (% 2b). En passant, vous ne devriez pas encoder l'URL entière. Vous devriez seulement encoder les paramètres dans l'URL. –