Quels sont les caractères sont dangereux dans les chaînes de requête?
J'ai besoin de prévenir les caractères qui causent vulnerablities dans l'url
Mon exemple d'url http://localhost/add.aspx?id=4;req=4
Veuillez donner la liste des personnages que j'ai besoin de bloc.
Je suis en utilisant ASP.net la page web. Je suis de liaison de l'information de base de données sql server.
Je veux juste la liste des personnages de rester loin de les Pirates de pénétrer indésirables chaînes de caractères dans l'url
S'il vous plaît ne marque réputation négative jusqu'à ce que quelqu'un de répondre. Si vous ne savez pas de réponse exacte à laisser de.
Vous avez besoin de donner plus d'info. Cela dépend vraiment de la façon dont les données sont utilisées. Si par exemple votre tirant sur la valeur de l'id et de générer une dynamique de requête sql pour MSSQL, qui serait différente, alors si vous faites une recherche LDAP etc.
Ajout de plus d'informations
Vous avez besoin de donner plus d'info. Cela dépend vraiment de la façon dont les données sont utilisées. Si par exemple votre tirant sur la valeur de l'id et de générer une dynamique de requête sql pour MSSQL, qui serait différente, alors si vous faites une recherche LDAP etc.
Ajout de plus d'informations
OriginalL'auteur web dunia | 2009-04-07
Vous devez vous connecter pour publier un commentaire.
En fonction de ce que la technologie que vous utilisez, il est généralement une fonction intégrée qui va gérer cela pour vous.
ASP.NET (VB) & Classique ASP
ASP.NET (C#)
PHP
Si vous désirez simplement supprimer les caractères non sécurisées, vous avez besoin d'une expression régulière. RFC 1738 définit quels sont les caractères sont dangereux pour les Url:
Si vous voulez complètement filer les mauvais caractères, vous aurez besoin d'utiliser des Expressions Régulières. Si vous souhaitez simplement de traduire (coder) ces caractères en toute sécurité, utiliser le Codage d'URL.
J'ai écrit ces de remplacer ce (-^{}[];$=*`#|@'\<>()+,\)avec une chaîne vide. Veuillez vérifier si c'est correct
Grâce Terrapin
OriginalL'auteur Seibar
Bien sûr, vous besoin encoder, car les réponses ont dit. Mais ne pas URL de codage des vulnérabilités de cause? Eh bien normalement pas directement; surtout, il fait juste de votre demande de pause quand inattendue d'entrée des caractères.
Si nous parlons web "vulnérabilités", les plus courants aujourd'hui sont:
Ces sont dans l'ordre décroissant de gravité et l'augmentation de la banalité. (Heureusement, quelques site web d'auteurs sont assez stupides pour passer à la saisie de l'utilisateur pour le système() ces jours, mais XSS et XSRF vulnérabilités sont monnaie courante.)
Chacun de ces vulnérabilités, vous devez comprendre le problème sous-jacent et à y faire face de façon délibérée. Il n'y a pas de magie liste de chaînes, vous devez bloquer” qui permettra de protéger votre demande si elle est en cours de lecture naïve au sujet de la sécurité. Il y sont certains add-ons qui font des choses comme le blocage de la chaîne de caractères " <script>’ lors de la soumission, mais tout ce qu'ils vous donner un faux sentiment de sécurité, car ils ne peuvent percevoir que quelques cas de figures, et sont généralement faciles à contourner.
Ils vont aussi arrêter ces chaînes étant soumis quand vous pourriez vraiment envie. Par exemple, certains (stupide) de PHP auteurs refusent toutes les apostrophes comme une tentative de freiner l'injection de code SQL; résultat est que vous ne pouvez pas être appelé “O'Reilly”. Oh pinaise. Ne pas bloquer; encoder correctement.
Par exemple, pour protéger contre les injections SQL assurez-vous que SQL échapper à toutes les chaînes que vous faites des requêtes (ou utiliser des requêtes paramétrées pour ce faire automatiquement); pour se protéger contre par injection HTML, HTML-coder toutes les chaînes de texte de la sortie sur la page (ou utiliser un template/MVC régime qui va le faire automatiquement).
Est-il censé être quelque chose de mal avec l'URL? C'est valable pour séparer les deux paramètres de la requête avec un ‘;’ à la place de la plus commune " &", mais beaucoup de frameworks web lamentablement ne comprends toujours pas cette syntaxe par défaut (y compris Java Servlet et ASP.NET). Donc, vous devez aller avec la "id=4&req=4" — ou, si vous avez vraiment voulu que, pour être un seul paramètre littérale, point-virgule, ‘id=4%3Breq%3D4’.
OriginalL'auteur bobince
http://en.wikipedia.org/wiki/Query_string#URL_encoding
Voir aussi: http://tools.ietf.org/html/rfc3986#section-2.2
C'est toujours précieux en tant que référence. Ajouté RFC.
OriginalL'auteur vartec
j'ai écrit ce, pour de jolies urls, mais ses bien sûr pas complète
""",,',·,',*,@,?,=,;,:,.,/,+,&,$,<,>,#,%,{,(,),},|,\,^,~,[,],—,–,-',,"
puis-je traduire des espaces "" et en répétant des espaces de "-"
La meilleure chose est de le faire ou de le combiner avec reqular expressions
OriginalL'auteur