XHTML.net

Technology talks by Loïc d’Anterroches

News, articles, PHP, scripts, XHTML/CSS, …

  1. Home
  2. PHP: Hypertext Preprocessor
  3. Pluf - Framework en PHP5

Protection de votre site contre les attaques extérieures avec Pluf

The 2008-12-05 at 23:05 by Loïc d'Anterroches filed under Pluf - Framework en PHP5.

Pluf offre depuis le début une protection active contre les attaques liées au cross site scripting ou XSS en faisant un échappement automatique de toutes les informations affichées dans les gabarits par défaut. Si vous voulez spécifiquement afficher une chaîne HTML venant d’une variable dans un gabarit, il faut la marquer comme sûre:

{$htmlpropre|safe} ou {$venantdunutilisateur}

Ici l‘html propre sera bien affiché mais la variable venant d’un utilisateur sera échappée. Avec cette méthode, vous savez ce que vous faites.

Il restait un point important que n’était pas pris en compte. Supposez que sur votre site, vous avez un formulaire pour supprimer un article. Vous cliquez sur le bouton, cela fait une requête POST sur le serveur pour supprimer l’article. On va dire que le formulaire est tout simple :

<form method="post" action="/admin/article/32/delete">
<input type="submit" />
</form>

Si vous êtes authentifié sur votre site, le formulaire va fonctionner, sinon, il va demander de vous authentifier. Maintenant, vous pensez que votre site est sécurisé avec le login. En fait, non, il n’est pas. Supposons que vous visitiez le site mechant.com qui contient une page toute normale avec ceci :

<form name="myform" action="votresite.com/admin/article/32/delete" method="post">
<a href="#" onClick="document.myform.submit();">plus d'informations à propos des pelles à neige</a>
</form>

si vous avez javascript d’activé et que vous loggué sur votre site, cela va supprimer l’article 32 de votre site. Aïe !

Vous avez compris, vous ne pouvez même pas considérer votre formulaire comme sûr, même s’il a été soumis par une personne authentifiée. La seule solution viable est d’ajouter en plus du besoin d’authentification, une variable supplémentaire dans le formulaire, variable unique pour chaque utilisateur et donc très difficile à trouver pour le site mechant.com. Cela veut dire qu’il faut faire cela pour chaque formulaire de vos pages. Oups…

Bonne nouvelle, un petit middleware de Pluf permet de faire cela automatiquement, juste une ligne à rajouter dans votre configuration.

Comments from readers

loïc m. said:

le fameux grain de sable il me semble non ?
très bonne idée de l'avoir ajouté.

J'aime de plus en plus Pluf :)

Voice your ideas

It is painless and I try not to kill electrons in the process.


Your email is required but will not be shared nor displayed.


Do you think your comment will force me to write even better stuff next time? If so, you simply rock.


Logo of Plume CMS