Page 1 sur 1
Sécurité PHP
Posté : 16 janv. 2006, 18:47
par VaN
Bonjour à toute la communauté,
Ca faisait un bail que j'étais pas passé.
J'aimerais avoir des informations sur la sécurité en PHP, et plus précisement, sur la sécurité à mettre en place lors d'utilisation de formulaire.
Je suis en train de créer un site, et je planche actuellement sur le forum, et j'aimerais le rendre le plus sécurisé possible.
Quelles sont les précautions à prendre quand on utilise des formulaires qui vont ensuite lancer une connection à la bdd ?
Vaut-il mieux utiliser des fonctions utilisant les regex, ou les fonctions PHP comme htmlspecialchars() et htmlentities() (il me semble avoir lu que cela avait un rapport avec la sécurité).
Est-il également indispensable d'interdire les caracteres < et > ?
Commen se fait-il que lorsque j'ecris du PHP ou du HTMl dans ce message, il ne soit pas prit en compte lors de l'affichage ?
Voila, tout plein de questions que je me pose, et que j'aimerais eclaircir avant de me lancer.
Posté : 16 janv. 2006, 20:10
par mario
Ce message a tout à fait sa place dans la rubrique "méthodologie et sécurité".
Pour éviter qu'un utilisateur malveillant inclus un script dans ton forum (à l'aide du formulaire) tu peux utiliser la fonction strip_tags()
http://fr2.php.net/manual/fr/function.strip-tags.php qui supprime les balises HTML et PHP d'une chaine de caractères.
Re: Sécurité PHP
Posté : 16 janv. 2006, 20:12
par Cyrano
Commen se fait-il que lorsque j'ecris du PHP ou du HTMl dans ce message, il ne soit pas prit en compte lors de l'affichage ?
Pour ça, il faut faire le redoutable effort de cliquer sur les boutons [
code] ou [
php] qui ajoute en plus une coloration syntaxique.
Pour le reste, ben il y a de nouveaux forums dont un beaucoup plus approprié sur la modélisation et la sécurité ou je déménage ce sujet de ce pas

Re: Sécurité PHP
Posté : 17 janv. 2006, 14:58
par VaN
Pour ça, il faut faire le redoutable effort de cliquer sur les boutons [code] ou [php] qui ajoute en plus une coloration syntaxique.
Je parlais au point de vue sécurité.
Imaginons que mon message soit :
<table width="1">
<tr>
<td><b> hello !</b></td>
</tr>
</table>
Le code source de la page entiere devrait etre :
..bla bla..
<td>
<table width="1">
<tr>
<td><b> hello !</b></td>
</tr>
</table>
</td>
.. bla bla..
Or cela n'affiche que le texte.
C'est la fonction strip_tags() qui a été utilisée ?
Posté : 17 janv. 2006, 15:07
par Cyrano
Beaucoup plus probablement la fonction htmlentities().
Posté : 17 janv. 2006, 21:34
par nicolas
Il ne faut pas utiliser strip_tags sans bien comprendre son fonctionnement.
Comme strip_tags() ne valide actuellement pas le HTML, les balises partielles ou rompues peuvent conduire à la suppression de plus de textes/données que désiré.
<?php
$s = 'Est-ce que 4 est < à 7 , je me pose la question ?';
echo strip_tags($s); // affiche "Est-ce que 4 est "
?>
Posté : 17 janv. 2006, 21:59
par Ripat
Vaste sujet.
Les dangers les plus évidents:
- Injection SQL. Solution: protéger tous les champs remplis par l'utilisateur avec addslaches() ou mieux, mysql_real_escape_string()
- Injection mail. Solution facile: supprimer tous les \r\n des champs to from subject
- crypter ou hacher les mots de passe en base de données.
- sortir les include sensibles (avec mots de passe de connexion à la bdd) hors DOCUMENT_ROOT du serveur web
- désactiver l'option Apache Indexes qui révèle la liste de tous les fichiers html ou PHP
- si tu as la main sur le serveur: fermer tous les ports non strictement nécessaires. Limiter l'accès ftp à un seul utilisateur à la fois. Supprimer ftp guest. Désactiver l'accès ssh par root.
- Pour les parano: serveur https - ssl
- Surveiller ses log Apache, ftp et ssh.
- Prier [-o<
- etc....
Je sens que la liste va s'allonger
Edit: Ah, j'oubliais, vérifier ses mots de passe serveur (ssh et autres) avec John the Ripper, la dernière fois que je l'ai fait il m'a trouvé deux mdp.
J'en ai pas dormi de la nuit!

Posté : 20 janv. 2006, 17:28
par VaN
merci Ripat, c'est le genre de conseils que je cherchais : )