Sécurité PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Sécurité PHP

par VaN » 20 janv. 2006, 17:28

merci Ripat, c'est le genre de conseils que je cherchais : )

par Ripat » 17 janv. 2006, 21:59

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 :wink:

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! :afraid:

par nicolas » 17 janv. 2006, 21:34

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 "
?>

par Cyrano » 17 janv. 2006, 15:07

Beaucoup plus probablement la fonction htmlentities().

Re: Sécurité PHP

par VaN » 17 janv. 2006, 14:58

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 ?

Re: Sécurité PHP

par Cyrano » 16 janv. 2006, 20:12

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 ;)

par mario » 16 janv. 2006, 20:10

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.

Sécurité PHP

par VaN » 16 janv. 2006, 18:47

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.