2013-04-09 2 views
4

Nous laissons nos utilisateurs uploadent le html sur nos serveurs. Nous avons besoin d'un langage de modèle pour que les utilisateurs puissent insérer des variables dans la sortie rendue, itérer sur des listes, etc. Nous utilisons actuellement JSF comme langage de modèle.Les pages JSF (Java Server Faces) sont-elles en sandbox?

Si nous laissons aux utilisateurs de télécharger xhtml avec des balises JSF dans ce, est-il quelque chose de mal qu'ils peuvent faire? Ou sont-ils sandboxed?

Nous avons délibérément évité JSP parce que nous ne voulons pas un utilisateur d'insérer du code Java malveillant dans une page qui pourrait fonctionner sur le serveur.

+0

Non, il est certainement pas sandbox. Comment feriez-vous autrement votre propre code JSF en toute liberté? – BalusC

+0

Par "votre propre code JSF", je pensais que tout ce que vous pouviez appeler était vos propres balises dans une bibliothèque de balises qui avait été mise à disposition de l'application? Est-il possible d'exécuter d'autres codes? (Nous ne permettons pas aux utilisateurs de télécharger leurs propres bibliothèques.) – ccleve

Répondre

1

Les pages JSF sont et non sandbox, dans un sens de sécurité. Il y a des limites de portée, mais ce n'est pas vraiment la même chose (certains se chevauchent, mais ils ont des objectifs différents). Vous ne devriez probablement pas autoriser le chargement du code JSF, mais vous devrez probablement de toute façon filtrer/filtrer l'entrée au mieux. Utilisez une liste blanche des opérations sécuritaires si possible. Les listes noires sont presque toujours triviales pour s'échapper parce qu'une énumération des valeurs mauvaises possibles est impossible. Faites attention, et faites tester votre site de manière professionnelle lorsque vous avez terminé pour vous assurer que vous n'avez rien manqué.

+0

Pouvez-vous donner un exemple d'une opération qui serait mauvaise? Pouvez-vous me donner des indications sur la façon de mettre en œuvre une liste blanche? – ccleve

+1

Désolé, je suis pressé, et du haut de ma tête, je ne peux pas penser à des exemples spécifiques, mais une manière générale vos utilisateurs peuvent être en mesure de créer une vue dans un modèle que vous ne voulez pas accéder (comme la base de données des utilisateurs, par exemple). Pour ce qui est de la liste blanche, la meilleure chose à faire est de penser à tout ce que vos utilisateurs pourraient utiliser, et de le poser aussi longtemps que cela n'est pas dangereux. Au cours des tests alpha et bêta, modifiez cette liste lorsque vos utilisateurs rencontrent des problèmes. Il existe d'autres techniques pour rendre cela moins fastidieux et manuel, mais dans l'ensemble, une liste blanche est une activité à forte intensité de main-d'œuvre. –

+0

Je suppose que ma question est plus basique. Comment puis-je implémenter une liste blanche? Nous n'utilisons pas de beans dans notre application, juste des tags. – ccleve

Questions connexes