49 votes

Quelle est la différence entre AntiXss.HtmlEncode et HttpUtility.HtmlEncode?

J'ai juste couru à travers une question avec une réponse, ce qui suggère la bibliothèque anti-xss pour éviter cross site scripting. Avait l'air intéressant, en lisant le blog msdn, il semble juste de fournir une méthode HtmlEncode (). Mais j'ai déjà utiliser HttpUtility.HtmlEncode().

Pourquoi voudrais-je utiliser des anti-xss.HtmlEncode sur HttpUtility.HtmlEncode?

En effet, je ne suis pas le premier à poser cette question. Et, en effet, Google se tourne les quelques réponses, principalement

  • Une liste blanche au lieu de noire-liste
  • 0,1 ms amélioration de la performance

Eh bien, c'est gentil, mais qu'est-ce que signifie pour moi? Je n'aime pas tellement au sujet de la performance de 0,1 ms et je n'ai pas vraiment l'impression que le téléchargement et l'ajout d'une autre bibliothèque de dépendance pour la fonctionnalité que j'ai déjà.

Existe-il des exemples de cas où les anti-xss la mise en œuvre d'empêcher une attaque qui le HttpUtility mise en œuvre ne serait pas?

Si je continue à utiliser le HttpUtility mise en œuvre, suis-je à risque? Ce à propos de ce 'bug'?

34voto

David Stratton Points 45298

Je n'ai pas de répondre précisément à votre question, mais je tiens à souligner que la liste blanche vs liste noire approche pas juste "sympa". Il est important de. Très important. Quand il s'agit de sécurité, chaque petite chose est important. Rappelez-vous que avec le cross-site scripting et cross-site request forgery , même si votre site n'est pas en montrant des données sensibles, un hacker pourrait infecter votre site par l'injection de javascript et de l'utiliser pour obtenir des données sensibles à partir d'un autre site. Ce faisant, il est crucial de bien.

OWASP lignes directrices de spécifier à l'aide d'une liste blanche de l'approche. Conformité à la norme PCI lignes directrices de le préciser dans les normes de codage (car ils se réfèrent tot il OWASP lignes directrices).

Aussi, la version la plus récente de la bibliothèque anti-xss a une belle nouvelle fonction: .GetSafeHtmlFragment() ce qui est agréable pour les cas où vous souhaitez stocker le code HTML dans la base de données et l'afficher à l'utilisateur au format HTML.

Aussi, comme pour le "bug", si vous êtes de codage correctement et en suivant toutes les consignes de sécurité, vous êtes paramétrée à l'aide de procédures stockées, de sorte que les guillemets simples seront traitées correctement, Si vous n'êtes pas de codage correctement, pas sur l'étagère de la bibliothèque va vous protéger entièrement. La bibliothèque anti-xss est destiné à être un outil à utiliser, pas un substitut pour la connaissance. En s'appuyant sur la bibliothèque de le faire pour vous serait attend à un très bon pinceau de très bonnes peintures sans un bon artiste.

Edit Ajoutée

Comme demandé dans la question, un exemple de cas où l'anti xss va vous protéger et HttpUtility ne sera pas:

HttpUtility.HtmlEncode et le Serveur. HtmlEncode ne l'empêchent pas de Cross Site Scripting

C'est, selon l'auteur, bien que. Je n'ai pas testé personnellement.


On dirait que vous êtes sur vos directives en matière de sécurité, de sorte que cela peut ne pas être quelque chose que je dois vous le dire, mais juste au cas où moins de développeurs expérimentés est là la lecture de ce, la raison pour laquelle je dis que la liste blanche d'approche est essentiel, c'est cela.

Maintenant, aujourd'hui, HttpUtility.HtmlEncode peut réussir à bloquer toute attaque là-bas, il suffit de retirer/codage < et > , ainsi que quelques autres "est reconnu comme potentiellement dangereux pour la santé" des personnages, mais quelqu'un est toujours en train de penser à de nouvelles façons de rupture dans. Permettant seulement connu-coffre-fort (liste blanche). le contenu est beaucoup plus facile que d'essayer de penser à chaque potentiellement dangereuses bits de l'entrée d'un attaquant pourrait éventuellement jeter à vous (liste noire de l'approche).

12voto

PhilPursglove Points 9758

En ce qui concerne les raisons pour lesquelles vous utiliseriez les unes sur les autres, considérez que la bibliothèque AntiXSS est publiée plus souvent que le framework ASP.NET. En effet, comme le dit David Stratton, "on essaie toujours de trouver de nouvelles façons de percer", quand quelqu'un en propose une, la bibliothèque AntiXSS est beaucoup plus susceptible de disposer d'une version mise à jour pour se défendre.

10voto

rahul sharma Points 41

Les éléments suivants sont les différences entre Microsoft.De sécurité.Application.Anti-xss.HtmlEncode et du Système.Web.HttpUtility.HtmlEncode méthodes:

1.Anti-XSS utilise la technique de liste blanche, parfois appelé le principe d'inclusion, de fournir une protection contre le Cross-Site Scripting (XSS) les attaques. Cette approche fonctionne par la définition d'un ensemble valide ou admissible de caractères, et l'encode en dehors de tout cet ensemble (caractères non valides ou les attaques potentielles). Système.Web.HttpUtility.HtmlEncode et d'autres méthodes de codage dans cet espace de noms principe de l'utilisation de exclusions et encoder uniquement de certains personnages désignés comme potentiellement dangereux comme <, >, & et " des personnages.

2.L'Anti-XSS Bibliothèque de la liste de blanc (ou de sécurité) le support des caractères plus d'une douzaine de langues (grec et en Copte,Cyrillique,alphabet Cyrillique Supplément, l'arménien, l'hébreu, l'arabe, le Syriaque, l'arabe Supplément, Thaana, NKo et plus)

3.Anti-XSS bibliothèque a été spécialement conçu pour atténuer les attaques XSS alors que HttpUtility méthodes de codage sont créés pour s'assurer que ASP.NET sortie à ne pas rompre HTML.

4.La Performance de la moyenne de la différence entre anti-xss.HtmlEncode() et HttpUtility.HtmlEncode() est de +0,1 millisecondes par transaction.

5.Anti-XSS Version 3.0 fournit un harnais de test qui permet aux développeurs d'exécuter à la fois XSS de validation et de tests de performance.

5voto

Chris Points 14136

La plupart des vulnérabilités XSS (n'importe quel type de vulnérabilité, en fait) sont basées uniquement sur le fait que la sécurité existante ne "s'attendait" pas à ce que certaines choses se produisent. Les approches utilisant uniquement la liste blanche sont plus susceptibles de gérer ces scénarios par défaut.

3voto

Bruce Points 3473

Nous utilisons l'approche de la liste blanche pour les sites Windows Live de Microsoft. Je suis sûr qu'il y a un certain nombre d'attaques de sécurité auxquelles nous n'avons pas encore pensé, alors je suis plus à l'aise avec l'approche paranoïaque. Je soupçonne qu'il y a eu des cas où la liste noire a exposé des vulnérabilités que la liste blanche n'a pas, mais je ne pourrais pas vous donner les détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X