MISE EN PLACE D'UNE CONNEXION SECURISÉ

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 27 mars 2008 à 15:05
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 27 mars 2008 à 15:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46191-mise-en-place-d-une-connexion-securise

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
27 mars 2008 à 15:05
Salut,

Excuse moi, mais le mot sécurisé dans le titre est VRAIMENT EN TROP... Non mais franchement...
Faut oser, quoi...

extract($_POST);$sql "SELECT * FROM `table` WHERE `login` '$login'";

T'appelles ça de la sécurité ? Je te renvois à la doc de PHP : http://fr.php.net/extract

Je cite :

N'utilisez pas extract() sur des données inconnues, comme les données utilisateurs ($_GET, etc).

Cela inclut évidemment $_POST

Il FAUT protéger ce genre d'information avec mysql_real_escape_string() sinon, c'est une ENORME faille XSS qui permet à n'importe qui de récupérer le mot de passe de n'importe qui, ou simplement de se connecter avec le compte d'un autre utilisateur. Ton script est dangereux et tu ne devrais pas dire qu'il est sécurisé... S'appuyer sur les sessions ne suffit pas (loin de là) à sécuriser une connexion utilisateur. Pour ça, encore une fois, je te renvois à la doc de PHP : http://fr.php.net/session

Je cite :

[...] Les sessions ne fournissent pas une méthode fiable d'identification.
Les sessions reposent sur un identifiant de session, ce qui signifie que quelqu'un peut voler cet identifiant, rien qu'en volant l'ID. Ce vol peut être rendu très difficile, comme en utilisant les cookies, mais en aucun cas cela sera impossible. Les sessions dépendent aussi de la discipline de l'utilisateur qui referme son navigateur à la fin de la session pour tout clore proprement. De plus, même les cookies de session peuvent être surveillés sur un réseau, ou bien notés par un proxy car ils transitent en clair sur le réseau. Pour remédier à cela, vous devriez implémenter un chiffrage SSL sur votre plate-forme.

Depuis quelques années maintenant, la directive register_globals est à OFF par défaut (depuis PHP 4.2.0 précisément), c'est pas pour rien... Et utiliser extract() pour pallier cette configuration qui te dérange est une très mauvaise chose.

Du coup, j'ai même pas regardé le reste...
Je ne note pas, je te laisse le soin de prendre les mesures qui s'imposent pour sécuriser réellement ton script que, dans l'état actuel, je déconseille vivement d'utiliser.