Securité
Laravel : utiliser un trait php pour purifier le HTML d’un champ
Lorsque l’ont stock du HTML dans le champ d’une base de donnée, il ne faut jamais le stocker sans le filtrer. C’est une mauvaise pratique bien connue, cela attire les failles XSS et personne n’aime en avoir.
Bref, voici une méthode sympa pour protéger un champ.
Dans un premier temps il faut installer HTMLPurifier
:
- composer require ezyang/htmlpurifier
Cette librairie permet de filtrer le html correctement. N’utilisez pas strip_tags, cette fonction n’est pas faite pour la sécurité.
Ma base de donnée contient assez bien de champs « description », ils risquent tous de contenir du HTML, car ils sont remplis par un CKeditor.
Cela affecte tous ces champs, j’ai envie de les protéger facilement.
J’ai donc créé un fichier ./app/traits/purify.php
On va mixer le pouvoir des mutators de Laravel et
- <?php
- namespace App;
- use HTMLPurifier_Config;
- use HTMLPurifier;
- trait Purify
- {
- /**
- * @property $allowed allowed html inside description field
- */
- private $allowed = 'p, strong, h2, h3, a[href], ul, ol, li, i';
- /**
- * Laravel mutator.
- * Filter all unauthorized HTML from the description field
- * @param $value
- */
- public function setDescriptionAttribute($value)
- {
- $config = HTMLPurifier_Config::createDefault();
- $config->set('HTML.Allowed', $this->allowed);
- $purifier = new HTMLPurifier($config);
- $this->attributes['description'] = $purifier->purify($value);
- }
- }
Il suffit alors d’utiliser ce trait dans un modèle Laravel pour que les champs description soit automatiquement filtrés avant d’être insérés dans la base de donnée !
- <?php
- namespace App;
- use Illuminate\Database\Eloquent\Model;
- class MyModel extends Model
- {
- use Purify;
- }
Laravel et PHP sont des outils vraiment formidables quand on comprend ce genre d’astuce !
Troy Hunt : The 6-Step « Happy Path » to HTTPS

Plein d’astuce à peut être utiliser pour améliorer le SSL !
Why you should stop using your fingerprint scanner to unlock your phone

La biométrie n’est pas fiable en matière de sécurité, elles dois rester de la science fiction :)
How to defend your website with ZIP bombs
Pas mal pour ce défendre des Script kiddie ! Faire crasher leur outils en carton :) !