- Sécurité des informations [PHP] - Programmation
Marsh Posté le 20-03-2002 à 14:13:48
1. il n'y a pas de sécurité dans un formulaire... Post n'affiche pas les infos envoyées dans l'url. la syntaxe est la même. par après tu peux utiliser $HTTP_POST_VARS["non_var"] pour être sûr que la donnée provient bien d'un formulaire et n'a pas été passée dans l'url.
2. quelqu'un qui a accès au log le verra dans l'url d'accès d'après ce que tu as dit. idem pour les sauvegardes par les navigateurs (liste déroulante des urls accédées par IE)
3. hfr n'est pas bien "protégé", le login et pwd sont envoyés avec chaque essage que tu envoies...
un bon procédé est l'utilisation des sessions + une table des sessions, éventuellement couplé à un cookie pour ne pas devoir réencoder le login + pwd chaque fois. Le but étant d'envoyer le moins de fois possible le login+pwd pour éviter toute interception de ces données sensibles.
Marsh Posté le 20-03-2002 à 14:20:57
Tu peux utiliser POST sans problèmes, ça ne change rien au code. C'est déja bien mieux que GET (qui n'est absolument pas adapté à cet usage) pour ce ce que tu veux faire, mais on ne peut pas dire que c'est "sécurisé" : l'information circule toujours en clair. Par contre pour la voir il faut quand même sniffer, alors qu'avec GET il n'y a qu'à regarder par dessus l'épaule.
Sinon un façon simple de faire les choses vraiment bien, c'est de passer par SSL. Mais c'est de la configuration au niveau du serveur HTTP, pas au niveau de ton code PHP.
[jfdsdjhfuetppo]--Message édité par Matafan--[/jfdsdjhfuetppo]
Marsh Posté le 20-03-2002 à 14:26:39
Donc dans un premier temps, pour amener un semblant de sécurité dans mes scripts d'authentification, il faut que je passe en POST. Bien, c'est déjà mieux.
Ensuite, j'irais voir sur la doc ce que je peux apprendre de $HTTP_POST_VARS. Je connais pas bien le système des variables globales (mis à part celles que je crée moi même).
Enfin, il faut que j'apprenne les sessions. En somme si j'ai bien compris, j'envoie une fois login et password et après tant que la variable de session est valable, c'est cet identifiant que j'utilisise, un peu comme un équivalent-password mais pour une durée donnée.
Marsh Posté le 20-03-2002 à 14:39:14
tout à fait en gros c ça
les variables globales, c'est bidon, comme tu peux le voir
oui,
- ou bien tu demandes le login+pwd une fois à chaque connexion,
- ou bien tu le stockes dans un cookie et tu le rapatries si la session de l'utilisateur ne se trouve pas dans la table des sessions et dans ce cas tu crées une entrée dans cette table..
Les variables de sessions t'intéresseront aussi très certainement.
Marsh Posté le 20-03-2002 à 15:37:15
Une dernière question (jusqu'à la prochaine, hein !) : un cookie est un fichier texte. Est-ce que le format du fichier texte est libre, ou bien un cookie a t-il toujours la même structure ?
Marsh Posté le 20-03-2002 à 16:04:52
Cherrytree a écrit a écrit : Une dernière question (jusqu'à la prochaine, hein !) : un cookie est un fichier texte. Est-ce que le format du fichier texte est libre, ou bien un cookie a t-il toujours la même structure ? |
ce n'est pas toi qui en détermine la structure, normalement tu dis quelles clé/valeurs tu veux y stocker, le navigateur les enregistre et te les renvoie à chaque fois qu'il est sur une page de ton site.
Marsh Posté le 20-03-2002 à 18:14:30
une petite remarque : tu peux creer une petite page qui regarde si les elements login et password existent dans ta session. Si ils n'existent pas, tu rediriges vers ta page de login.
Ensuite, tu fais un include de cette page dans ttes celles de ton site.
Cette page te permettra d'eviter que quelqu'un aille sur une page de ton site sans etre passé par l'identification...
Marsh Posté le 20-03-2002 à 18:51:42
Et tu n'oublies pas de configurer apache pour qu'il ne renvoie pas les fichier *.inc (par exemple) si un petit malin les demande
Marsh Posté le 20-03-2002 à 18:55:49
matafan a écrit a écrit : Et tu n'oublies pas de configurer apache pour qu'il ne renvoie pas les fichier *.inc (par exemple) si un petit malin les demande |
tu fais des fichiers .inc.php ...
Marsh Posté le 20-03-2002 à 18:59:39
youdontcare a écrit a écrit : tu fais des fichiers .inc.php ... |
Ca je savais
Par contre le coup de l'include du fichier qui teste le login, c'est pas con du tout. En plus je suis trop bête, parce que ce test, je le fais dans chaque fichier déjà, bonjour le sens de la conception. J'vous jure, y a des jours...
Merci encore. Le topic reste ouvert. Si vous sentez l'envie d'ajouter qqch, faites-le, j'apprends plein de choses grace à vous.
Marsh Posté le 21-03-2002 à 00:33:34
youdontcare a écrit a écrit : tu fais des fichiers .inc.php ... |
Ouais je préfère même les mettre directos dans un dossier protégé avec un .htaccess .
Marsh Posté le 21-03-2002 à 02:11:43
Tentacle a écrit a écrit : Ouais je préfère même les mettre directos dans un dossier protégé avec un .htaccess . |
tu sais que je me suis amusé pas plus tard qu'hier à essayer de voir les fichiers .inc d'un site d'un gars de allhtml...
Fais gaffe à ce genre d'extensions...
1. La personne en question avait installé un genre de browser d'image comme on en voit beaucoup... très pratique pour lister le contenu des répertoires un petit www.monsite.com/images/browser.php?directory=../admin donne de très beaux résultats.
Le code qu'il a downloadé et installé est mal développé puisqu'il n'empêche pas de remonter dans l'arborescence.
Il ne faut pas oublier que ce genre de scripts ouvrent directement les répertoires pour lister leur contenu et l'afficher (opendir("$directory" );...)
Si ça avait été sur son pc perso, je remontais jusqu'a la racine de son serveur (du serveur pc, pas que du site !!)
2. Il avait aussi utilisé les frames php avec un include("$menu" ); ou qqch dans le genre... Très pratique pour afficher tout ce que contiennent les fichiers dont l'extension n'est pas php/php3. www.monsite.com/index.php?fichier=admin/config.inc
ça aussi c'est mal développé, il n'est pas le premier à en faire les frais... Ne jamais faire passer le nom du fichier dans l'url, mais toujours faire passer par exemple la clé d'un tableau. ex:
$tab= array("menu1"=>"page1.php" );
include($tab["$fichier"]);
comme il avait eu la présence d'esprit de renommer tout ces fichiers ".inc" en ".inc.php", je n'ai évidemment rien su voir (bon y a juste que son répertoire /admin/ n'était pas protégé, mais bon, je suis pas méchant, je lui ai dit...).
s'il y avait eu le moindre fichier ne portant pas l'extension php je l'aurais affiché comme je voulais avec ou sans .htaccess !!
Donc, sois sûr de toi avant d'utiliser ce genre d'extension
a+
[jfdsdjhfuetppo]--Message édité par ethernal--[/jfdsdjhfuetppo]
Marsh Posté le 21-03-2002 à 13:17:31
Et bêh ! Ca fait peur c'truc là.
[jfdsdjhfuetppo]--Message édité par Cherrytree--[/jfdsdjhfuetppo]
Marsh Posté le 20-03-2002 à 14:06:21
Salut à tous.
Je me pose une question de conception. PHP n'est pas un langage dont je maîtrise toutes les facettes mais que j'utilise volontiers parce qu'il est simple et puissant.
En particulier pour saisir une paires de valeurs (login, password) dans un formulaire HTML, il est le roi. Dans mes formulaires, j'utilise la méthode GET, mais l'inconvénient est que les variables apparaissent en clair dans l'url (dont le fameux password). C'est pas acceptable.
1. Est-ce qu'avec POST, je peux récupérer les variables pareil qu'avec GET (syntaxe dans le script de récupération...) ? Est-ce sécurisé ?
2. Quels risques a t'on si l'on passe le login et le password par GET ?
3. Quelle est la bonne méthode, celle qui prime par exemple sur un forum sérieux comme HFR ? Hachage ? Autre ?