Pour rappel concernant php... les fonctions, procédures suivantes sont à employer sans modération... .. .Voila dans les grandes ligne... la liste est loin d'être exaustive mais, sauf oubli, le plus important est là... .. .
- addslashes et mysql_real_escape_string
- (int)$maVar (par ex dans le cas d'un id)
- htmlspecialchars, htmlentities voir même carement strip_tags
- is_file ou file_exists (fameuse faille du include)
- file_get_contents (pour des fichiers autre que php pas besoin d'include)
- initialiser ses variables à vide en début de script ($maVar = ''; )
- error_reporting(0); pour le site en production le mieux étant paralellement de loguer les erreurs php et de n'afficher le mode debug (pour les script qui en ont) qu'aux admin
- chmod 444 pour tous les fichiers de config (le mieux étant de les mettre dans un répertoire à part protégé par un .htaccess en deny from all)
- comme dit précédament donner des noms bizars à tous les fichiers (surtout éviter les admin.php) et répertoires qui n'ont pas à être accédé par les utilisateurs normaux (par exemple utiliser un préfix genre pwet_includes plop_admin)
- évitez les options "connection automatique" et d'une manière générale ne faire que peu confiance aux cookies (sauf pour des options mineurs genre quel theme veut tu utiliser)
- stocker une variable unique à l'utilisateur dans la sessions du membre (genre ip + useragent + language le tout hashé avec md5) et le comparer à chaque début de page pour lutter contre le session hijacking
- comme dit précédament logger les actions des utilisateurs peut être plus qu'instructif
- config php.ini : register_globals à off, allow_url_fopen à off et safe_mode à on c'est pas du luxe non plus
- protéger les répertoires contenant les log avec un .htaccess et d'une manière générale tous les répertoire ou l'utilisateur n'est pas censé accéder via http
- controler la provenance d'un formulaire soit avec la technique captcha (image contenant un code à saisir générée à la volée) ou alors avec la technique du ticket (champs caché du formulaire contenant une id unique générée à la volée)
- concernant l'identification préférer une requete qui renvoie les infos par rapport au login et comparer ensuite le pass plutot que de juste regarder si le membre existe (WHERE login=$login AND pass=$pass)
- hascher le pass avec un grain de sel généré à la volée lors de la soumission pour la connection peut être un plus non négligeable... ça donne du fil en plus à tordre au pseudo pirate...
- temporiser la soumission des infos de connection (genre avec un sleep d'une seconde ou deux) pour eviter les boots et rendre difficil les attaque par brute force...
- bannir la personnes genre une demi heure si elle se plante plus de trois fois de pass... .. .
@ tchaOo°
Partager