Salut, petit cours de sécurité en php
ce tutorial suppose que vous savez programmer "convenablement" en php
j'ai mis entre guillemet car pour moi si il y a pas de sécurité c'est pas vraiment savoir programmer
La sécurité en php pourquoi et pour qui ?La sécurité pour :
- vos données
- votre serveur
- vos visiteurs et vous
Comment se protégercomme vous le savez nous avons parfois besoin de receptionner des informations
entrés par le visiteur, mais aussi les données entré en parametre dans une url.
Dans tout les cas toutes les données envoyées vers le serveur doivent être vérifié
avant d'être utilisé dans une commande quelquonque lecture d'une base de données,
affichage sur page, etc.
2 exemples
- (vérification d'un mot de passe)
- (ecriture d'un fichier)
Voilà des situations que je retrouve assez souvent malheuresement
vérification d'un mot de passe.Comment doit on logger un membre
D'une part sachez que l'inscription et le login doivent être fais à l'identique (les même traitement pour éviterdes probleme de login différent.
coté php vous devez réceptionner le login et le traiter de façon que les caracteres soit gérer avant la vérification.
Créez vous une fonction str_replace complete en remplacant les carateres genant par leur homologue HTML
exemple remplacez
" par
"ce qui donne :
$valeur = str_replace("\"", """, $valeur);
pour la guillemet vous devez mettre \ car sinon elle utilisé pour la guillemet de fermeture
idem si vous voulez remplacer \ il faut la doubler \\
à vous de savoir maintenant quoi remplacer si vous ne connaissez pas la valeur HTML d'un caractere
allez voir la table ASCCII ou vous trouverez la valeur numerique en html ça fonctionne egalement.
donc vous faite cette verif sur le login et le passe que ce soit au la connection ou à l'inscription
et oui imaginé votre mebre vient s'inscrire son pseudo :
<pseudo>ok vous enregistrez ainsi mais à la vérification vous faite la modification et votre membre lors de la recherche dans la base de données sera
<pseudo>donc en plus il est tres important de protéger votre base de données donc c'est tres tres important de faire cette verification à chaque lecture dans la base de données (même pour une simple lecture)
car quelqu'un de mal intentionner peut faire une injection SQL qui a pour but de changer la commande SQL
(j'vais pas vous faire un cours d'injection SQL la n'est pas le but) enfin sachez que le fait de laisser la possibilité de faire une injection est tres dangereux on peut prendre toute les données de la bdd les effacer, ou même fermer le serveur.
ecriture d'un fichierJ'ai vu oui je vous assure j'ai vu

un forum fais par petit programmeur php qui avait pensé
qu'il était sympa d'écrire son forum lui même, bonne initiative me direz vous.
La particularité de ce forum étant qu'il n'utilise pas de bdd, les forums sont en fait des dossiers
et les sujets des fichiers les réponses se trouvent à la suite du sujet (dans le même fichiers) donc jusque la rien de mechant il est tout à fait possible de faire un forum de ce type totalement sécurisé.
Mais le probleme étant que rien n'était protégé.
j'ai vite compris que pour afficher la liste des sujets c'était le listing du contenu du forum (dossier)
Et donc en marquant direcetement dans la barre de titre le titre du sujet j'obtenais le texte du sujet brut.
Quel horreur les balises sont en claire.
Alors je décide faire un test je vais écrire un message.
mon titre : espion.php
mon message : <?php echo "Ah oui là y a tres grosse faille"; ?>
Envoyé.
Et hop la je vais voir mon message et oh grand malheur je vois seulement
Ah oui là y a tres grosse faillegrand malheur pour le webmaster qui la à laissé un acces complet à son site
on peut tout faire maintenant ecrire un petit script d'upload par exemple pour uploader des fichiers
enfin libre à celui qui veut d'imaginer ce qu'il peut faire (acces totalement complet).
J'ai vite prévenu le webmaster tout de même.
Je suis pas un AS de la sécurité je me débrouilles avec mes quelques connaissance.
Je ne suis pas non plus un hacker (malheuresemnt).
Je bidouille voilà tout si vous avez besoin d'aide je peux rendre service, mais je ne pourrais pas vous garantir une totale sécurité sur un serveur ou sur un site.
_________________
