Contribuez à SecuObs en envoyant des bitcoins ou des dogecoins.
Nouveaux articles (fr): 1pwnthhW21zdnQ5WucjmnF3pk9puT5fDF
Amélioration du site: 1hckU85orcGCm8A9hk67391LCy4ECGJca

Contribute to SecuObs by sending bitcoins or dogecoins.



[Sécurité et PHP - Partie 5] Astuces

Par Rédaction, secuobs.com
Le 10/05/2008


Résumé : Dans cette quatrième et dernière partie du dossier sur la sécurité (et l'insécurité) des scripts PHP, on retrouve quelques principes qui vont permettre d'ajouter une couche de sécurisation supplémentaires aux scripts développés dans ce langage.



NDLR : ce document a été rédigé en 2006, certaines versions ainsi que certaines configurations des logiciels utilisés selon ces versions peuvent être différentes de celles qui sont mentionnées ; merci de vous reporter vers les sites officiels des projets en question en cas de problème.


Pour sécuriser de manière optimale une application Web, on peut appliquer des règles de sécurité qui permettent de vérifier qu’aucune entrée n’a été modifiée par le visiteur.

Pour chaque lien il suffit de rajouter une variable qui va servir de signature de validité pour la requête.

Pour générer les liens sécurisé, le code suivant :

< ?
$secretkey = "highly secret key " ;
Echo " code html …. ";
Echo "<a href=\"/page.php ?var=course&signature=".md5($secretkey."course") ;

?>



Le fichier page.php :

< ?
$secretkey = "highly secret key " ;
$realsign = md5($secretkey.$_REQUEST["var"]) ;
If($realsign != $_REQUEST["signature"])
{
Echo "mauvaise valeur d’entrée" ;
Exit() ;
}
… suite du fichier
?>



Ceci permet de s'assurer que les requêtes ont pour origine les pages de notre site.

Il faut aussi désactiver l’affichage des messages d’erreur dans la configuration de PHP ou bien a l’aide de :

ini_set("error_display",off);

Cela doit être placé au début du script, car chaque message d’erreur donne des informations précieuses à un attaquant potentiel.

Il existe également une technique permettant de sécuriser un formulaire, elle consiste à placer un numéro de session que l’on va stocker dans une table.

Lors de la validation du formulaire on vérifie alors que ce numéro est bien dans la table.

Un outil essentiel à la sécurité de vos script est le patch hardened-PHP que l'on peut trouver sur le site officiel du projet ( lien ).

Le projet Suhosin ( lien ) est également à étudier.

Des compléments d'informations sont disponibles dans les articles suivants ( failles XSRF lien ) et ( mois des failles PHP - lien ).


Autres ressources dans ce dossier :

[Sécurité et PHP - Partie 1] Les injections SQL – lien

[Sécurité et PHP - Partie 2] La gestion des sessions – lien

[Sécurité et PHP - Partie 3] Les failles PHP – lien

[Sécurité et PHP - Partie 4] RPVS – lien