IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

HTML dans le champ d'un modèle, comment sécuriser (contre les injections, les erreurs)?


Sujet :

Django Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 44
    Points
    44
    Par défaut HTML dans le champ d'un modèle, comment sécuriser (contre les injections, les erreurs)?
    Bonjour!

    Je suis en train de réaliser un site avec Django, avec un modèle "article".
    Le champs "content" de ce modèle article pourra contenir du HTML (du simple texte c'est un peu moche et limité ), et celui-ci est interprété comme tel lors de l'affichage de l'article sur le site. (j'ai donc utilisé l'option "safe" dans mon template pour l'affichage du champ en question).
    Cependant ce site est destiné à des personnes ne connaissant pas forcément bien le HTML et qui pourraient faire des bêtises ou des erreurs dans la rédaction des articles.
    J'aimerais donc protéger le site contre ce genre d'erreur, afin que par exemple un article "défectueux" ne puisse pas être affiché ou retourne un message d'erreur dans le formulaire de rédaction dans la partie administration de mon site, ou encore utiliser un autre langage que le HTML peut-être (bbcode?)?

    avez-vous des pistes, retours d'expérience ou conseils pour résoudre ce soucis?

    Merci d'avance!

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Plusieurs pistes:

    - Prévisualisation obligatoire avant enregistrement
    - Limiter les balises autorisées et écrire ton parser
    - Poser la question sur le forum HTML

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 44
    Points
    44
    Par défaut
    Je vais regarder ça merci
    Je suis aussi en train d'étudier cet article :
    http://thomasondjango.fr/injection-d...3%A8le-django/

    Qui ma foi me semble intéressant.
    Ça va me prendre un moment de tout comprendre par contre.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Points : 224
    Points
    224
    Par défaut
    Hello,

    J'arrive probablement après la bataille, mais si une dépendance supplémentaire ne t'effraie pas, html5lib implémente le nettoyage du markup HTML
    Voir ici https://github.com/html5lib/html5lib...b/sanitizer.py

    Un exemple d'utilisation dans l'appli django-wysiwyg ici https://github.com/pydanny/django-wy...g/utils.py#L32

    Citation Envoyé par vmonteco Voir le message
    Je suis aussi en train d'étudier cet article :
    http://thomasondjango.fr/injection-d...3%A8le-django/

    Qui ma foi me semble intéressant.
    Ça va me prendre un moment de tout comprendre par contre.
    L'injection de champs dans un modèle tiers... oui mais bon, ça s'apparente plus à du monkey-patching qu'autre chose. Si ça peut rendre de gros services (j'ai des applications django "dans la vraie vie" qui monkey-patch des applis tiers, notamment des cms...), ça reste à manier avec précaution, notamment lors de la mise à jour des applis tierces...

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/09/2009, 15h13
  2. [MySQL] messagerie html dans un champ
    Par tiesto95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/02/2009, 09h44
  3. Insérer des Balises HTML dans un champ mémo
    Par Heureux-oli dans le forum IHM
    Réponses: 18
    Dernier message: 21/03/2007, 20h05
  4. Réponses: 4
    Dernier message: 22/10/2006, 00h23
  5. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo