2011-06-15 3 views
1

Je souhaite autoriser mes utilisateurs à entrer du code HTML.Quelles sont mes options pour le listing HTML dans ColdFusion?

Exigences

  1. Permettre un ensemble spécifique de balises HTML.
  2. caractères Preserve (ne code pas pour ã dans ã, par exemple)

Les options existantes

  1. AntiSamy. Malheureusement AntiSamy code des caractères spéciaux et des pauses exigence 2.
  2. Fonctions ColdFusion autochtones (HTMLCodeFormat() etc ...) ne fonctionnent pas comme ils encodent HTML en entités, et ne parviennent donc exigence 1.
  3. je trouve cet ensemble de fonctions quelque part , mais je n'ai aucun moyen de dire comment c'est sécurisé: http://pastie.org/2072867

Alors quelles sont mes options? Existe-t-il des bibliothèques pour cela?

+0

Qu'est-ce qui ne va pas avec AntiSamy et ne comprend pas comment convertir des entités HTML? Voir la réponse à cette question pour faire cela avec Java en utilisant une bibliothèque Apache Commons: http://stackoverflow.com/questions/994331/java-how-to-decode-html-character-entities-in-java-like-httputility-htmldecode – orangepips

+1

@orangepips, parce que je lis ici que cela pourrait être potentiellement non sécurisé: http://stackoverflow.com/questions/3246739/how-to-not-transform-special-characters-to-html-entities-with-owasp-antisamy/4052924 # 4052924 - Je ne sais pas si c'est vrai! – Mohamad

+0

@Mohammad, intéressant. Pensez que vous pourriez vous retourner et utiliser 'HTMLEditFormat (cleanUpString)' pour échapper à l'exemple cité dans cette question. – orangepips

Répondre

2

Portcullis fonctionne bien pour Cold Fusion pour les problèmes spécifiques à l'attaque. J'ai utilisé quelques autres solutions regex que j'ai trouvées sur le web au fil du temps qui ont bien fonctionné, même si elles n'ont pas été aussi détaillées. En 15 ans (10 en tant que développeur de CMS) rien de ce que j'ai construit n'a été piraté .... frappez sur le bois.

Lorsque vous développez des champs d'entrée de n'importe quel type, il est bon d'examiner le problème sous différents angles. Vous avez le côté de l'interface utilisateur, qui comprend à la fois la convivialité et la validation côté client. Oui, il peut être contourné, mais la validation basée sur javascript est plus rapide, plus réactive et plus élevée sur l'échelle de l'interface utilisateur magique que la méthode backend-interruption ou simplement faire disparaître les choses sans avertissement. Cela accélérera la validation back-end, car elle effectue le filtrage initial. Donc, ce n'est pas une solution "au lieu de" mais une solution de type "en plus de" qui ne peut être ignorée.

Toujours sur le front de l'interface utilisateur, offrir à vos utilisateurs un éditeur de bonne qualité peut également faire une énorme différence dans le processus. Mon favori personnel est CKeditor simplement parce que c'est le seul qui peut manipuler le code de Microsoft Word sur le devant, le maintenant loin de ma base de données. Il semble stupide, mais Word HTML est valide, donc il ne mettra pas en drapeau les drapeaux rouges .... mais sur un document de taille moyenne, il surchargera rapidement une insertion de champ DB max, croyez-le ou non. Non seulement un bon rédacteur réduira la quantité de HTML stupide qui arrive, mais il rendra également les choses plus rapidement pour l'utilisateur ... gagnant/gagnant.

Personnellement, je code et décode mes personnages ... ça a toujours bien fonctionné, donc je n'ai jamais changé de pratique.

Questions connexes