web-dev-qa-db-fra.com

Quelles mesures faut-il prendre pour protéger le contenu saisi par l'utilisateur sur un CMS?

Supposons que vous construisez un CMS à toute épreuve pour votre entreprise. Le coût, le temps et la technologie ne sont pas un problème. Les développeurs sont prêts à utiliser les connaissances et l'expérience pour créer un code exceptionnel.

Maintenant, vous devez répondre à la vieille question du système de gestion de contenu: quelles étapes prenez-vous pour vous assurer que le code entré dans le système de gestion de contenu par l'utilisateur est acceptable pour votre site? Je pense au-delà du simple fait d'échapper techniquement une chaîne pour la rendre utilisable dans une base de données. Il convient de prendre en compte les normes w3, le filtrage du contenu inapproprié, l'orthographe et des énigmes telles que le nettoyage de code Microsoft Word. Certes, il y a des préoccupations que j'ai ratées ...

3
bpeterson76

Je pense que la question ici est:

"Comment obtenir exactement ce que je veux de mes utilisateurs en leur facilitant la saisie d'une manière absurde"

Le seul cas où je vois des utilisateurs ayant réellement besoin d'utiliser HTML directement dans une certaine forme de saisie est quand/s'ils mettent en forme des données tabulaires. Cependant, dans ce cas, il est beaucoup plus facile de leur donner un formulaire qui peut faire la même chose, ou n’importe laquelle des grilles populaires disponibles dans diverses bibliothèques.

Je pense que la règle d'or, du moins pour moi, consiste à utiliser un système de balisage qui n'est pas HTML, que vos gestionnaires de formulaire pourront ensuite utiliser pour construire un code HTML superbe, conforme aux normes et sémantiquement correct.

Les scanneurs tiers peuvent (normalement) détecter la plupart des problèmes liés aux fichiers téléchargés. Personnellement, j'aime bien ClamAV - qui est disponible à la fois pour * nix et Windows.

Cela résout le problème de s’assurer que tout est bien organisé, correctement formaté et qu’aucun service indésirable n’est servi aux visiteurs, ou est-ce vrai?

L'autre chose que vous devez faire est d'examiner tout le contenu qu'ils soumettent, un être humain doit avoir un rôle à jouer à cet égard ou des choses vont nous manquer. Cette image est-elle appropriée? Ce lien mène-t-il à un malware ou à quelque chose d'autre que vous préférez ne pas lier? Etc.

Fournir un mécanisme de signalisation aide, mais n’est pas toujours efficace. Par exemple, si vous fournissez une réponse à une question vieille de deux ans sur stackoverflow.com, la question est immédiatement renvoyée à la page d'accueil, où la communauté est sûre de vérifier ce qui vient d'être ajouté. Tous les systèmes ne sont pas conçus avec ce type de protection à l’esprit.

Si vous faites beaucoup de volume en ce qui concerne le contenu fourni par les utilisateurs, cela vaut probablement la peine d'explorer le recours à des sous-traitants qui examinent simplement les soumissions pour s'assurer que les liens/médias inappropriés sont supprimés rapidement. Ou peut-être pouvez-vous demander l'aide de votre communauté d'utilisateurs (s'il en existe une) pour faire de même, en échange de certains privilèges spéciaux ou avantages supplémentaires dont ne bénéficient pas les utilisateurs normaux.

1
Tim Post

Je répondrais à cela en le transformant en "Quels outils dois-je implémenter?", Car vous pourrez alors commencer à penser à un ensemble d'utilitaires, d'outils et de plug-ins que vous pouvez utiliser pour mettre en œuvre les sauvegardes.

Des éléments tels que TinyMCE pour les entrées complexes, grâce à une fonction "coller à partir de Word", idéale pour éliminer de nombreux problèmes de caractères dans Word.

Je remarque que vous dites "Le code est entré dans le cms" alors parlons-nous du code réel plutôt que du contenu? Comme cela changerait le paysage de l'application un peu à mon avis.

Sinon, je suis d'accord avec le commentaire de jessegavin, il pourrait y avoir beaucoup de réponses à cette question. Je dois admettre que je ne comprends pas tout à fait la question telle qu'elle est. En tant que développeur moi-même, ces garanties sont des éléments que je codifierais de toute façon lors de la construction du CMS.

Bien que je pense que beaucoup de garanties pourraient être couvertes lors de la phase de conception de cas d'utilisation.

0
David Yell

Eh bien, si je construisais un CMS (et, en fait, je l’ai fait), peu importait le contenu qui y était entré, tant que ce contenu pouvait être stocké et récupéré. Ce n’est pas le travail d’un système de gestion de contenu de deviner ce qui est acceptable et ce qui ne l’est pas, car cela varie en fonction de l’utilisation.

Tout ce que vous avez à faire est de vous assurer que le contenu est modéré (c.-à-d. Qu'il passe par un processus d'approbation de flux de travail). C'est pourquoi vous avez des éditeurs de contenu, qui ont pour tâche de vérifier le contenu saisi, puis de décider de ce qui doit être publié, de ce qui doit être rejeté et de ce qui doit être rangé. Bien qu'il soit relativement facile de nettoyer le contenu WYSIWYG par programmation, il faut un humain pour décider vraiment si le contenu convient à la publication.

Ne laissez jamais les utilisateurs entrer du contenu directement sur votre site. Consultez-le toujours.

0
Dan Diplo