2009-09-11 9 views
2

Castle Project est plein de fonctionnalités, comprend des sous-projets impressionnants, et le développement avec lui a été un plaisir.Comment gérer XSS sur NVelocity

Mon équipe est presque prête à livrer un produit personnalisé EAM et nous polissons notre système. Nous avons essayé quelques attaques de base XSS et devinez: Ils ont tous travaillé.

Même si elle fonctionnera dans un environnement Intranet, nous ne voudrions pas que les utilisateurs cassent accidentellement tout le système, et nous étudions des solutions pour gérer les problèmes XSS.

NVelocity par défaut n'échappe rien, si ce code:

${entity.Field} 

avec champs contenant des choses comme:

<script>alert('xss!')</script> 

nous donnerait une belle alerte XSS.

La bibliothèque AntiXSS de Microsoft a l'air bien: gère plusieurs types de vecteurs XSS possibles, et ainsi de suite. Nous sommes tombés sur le helper d'AndyPike, mais cette solution nous ferait refactoriser quelques milliers de lignes. Oui, pas bien. Et cela ne gèrerait pas la liaison automatique ActiveRecord/NVelocity lors de la modification d'entités existantes.

La question est: En utilisant des techniques de codage de sortie, est-il possible/recommandé de patcher le moteur NVelocity de Castle Project? Tout comme ils l'ont fait avec Brail? Quelqu'un a une meilleure idée?

Merci!

PS .: Stackoverflowers en utilisant Castle Project utiliserait ce patch?

+0

Juste une note rapide: FormHelper ne HtmlEncondig avant de mettre les valeurs dans les champs d'entrée. – wtaniguchi

Répondre

1

NVelocity par défaut n'échappe rien

cher Oh. Ensuite, vous avez beaucoup de code à corriger.

Ne pas échapper le texte mis en HTML n'est pas une erreur que vous pouvez corriger après coup. Oui, il y a des bibliothèques qui filtrent les mauvaises entrées évidentes, mais elles cachent seulement le problème, et pas très bien. Etant donné le large éventail de constructions bizarres que les navigateurs accepteront, il y aura toujours des moyens de passer du mauvais HTML à travers eux, et en même temps ils vous donneront des faux positifs - par exemple ce message serait bloqué pour discuter de la balise <script>. Il s'agit au mieux d'un pansement temporaire jusqu'à ce que vous puissiez résoudre le vrai problème.

+0

Qu'entendez-vous par «par exemple», votre message serait bloqué? Echapper des valeurs lors de l'insertion en HTML vous donnerait à peu près la même chose que vous obtenez ici dans SO. N'est-ce pas? – wtaniguchi

+0

Oui. Si vous échappez du texte en l'ajoutant en HTML, vous le faites correctement.Ce que je veux dire, c'est que si SO le faisait mal (comme NVelocity l'est apparemment), et ensuite essayé de couvrir cela en utilisant l'un des filtres d'entrée 'anti-XSS', cela aurait des effets secondaires négatifs comme bloquer ou déformer entrée d'utilisateur valide comme nous parle de '

Questions connexes