Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour
J'ai fait un système simple de loggin/pass, je ne désire pas le changer, juste savoir si c'est sécurisé ou pas, si non, merci de m'indiquer la faille et si elle est grande/dangereuse et si un utilisateur peut vraiment faire des choses (même avec WebDeveloppeur, l'addon de firefox par exemple). Si oui c'est sécu alors tant mieux :)
Voici le code important :
if (isset($_POST['submit']))
{
for ($i=0;$i<sizeof($users);$i++)
{
if ($users[$i]==$_POST['username'] && $passw[$i]==$_POST['password'])
{
$logginok=1;
}
}
if ($logginok==1)
{
...// actions admin ici
}
}
...
?>
config.inc.php contient :
Bien sur le tout derrière un formulaire !
Merci d'avance à tous !
Hors ligne
Salut,
Vaste sujet...
La règle c'est que $_POST venant de l'utilisateur, celui-ci peux contenir tout et n'importe quoi mais surtout des choses malveillantes.
Donc il faut contrôler ces données en fonction de leur utilisation.
Dans ton cas, tu n'intègre pas $_POST dans une requête SQL donc tu ne crains pas d'injection SQL, tu ne l'affiche pas non plus dons pas de risque XSS, tu ne l'utilise pas dans un mail donc pas de risque non plus de ce coté là.
Tu le compare à d'autres valeurs (qui elles sont sures apparemment) mais tu fait tu fait une comparaisons des valeurs uniquement ( == ) or si $_POST['username'] et $_POST['password'] ont la valeur "TRUE" d'assignée, le test sera bon... !!
Il est donc mieux de faire une comparaison de valeur et de type :
De plus une vérification par !empty des deux valeurs sera mieux qu'un simple isset.
Reste quand même qu'apparemment le pass n'est pas hashé et est passé en clair donc il peut être intercepté.
Voila ce que je peux en dire au vue de cette portion de code.
A+
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Merci pour cette réponse, j'ai essayé en mettant "TRUE" mais ça ne passe pas ! OUF ! J'imagine que le php compare "TRUE" en tant que chaine et non booleen.
edit : j'ai laissé == pour le moment.
Dernière modification par JulioBox (17-07-2009 08:26:13)
Hors ligne
teu teu teu...
Sur que si tu as mis TRUE dans le champs input, a l'arrivée ce sera une chaine de caractères contenant "true".
Mais il y a d'autres moyens de balancer un véritable TRUE dans $_POST.
... C'est toi qui vois ...
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
o_O je peux balancer un TRUE dans un $_POST sans passer par le INPUT ? C'est quoi ce truc
Hors ligne
Il est tout à fait possible d'envoyer des $_POST sans utiliser de formulaire !
Mais c'est une autre histoire...
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
J'aime les histoires, et celle-ci m'intéresse afin d'éviter d'autres erreurs de sécurité, je vais donc mettre === mais j'aimerais tout de même en savoir plus sur cet envoie de $_POST. On dirait que tu essaies d'éviter d'en parler, est-ce un secret défense ?
Hors ligne
est-ce un secret défense ?
Oui c'est pour éviter l'invasion Russe...
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Non mais je suis sérieux, ya pas un MP possible ? Un mail ? J'ai pas envie de rester dans l'ignorance, savoir que ça, ça existe, que mon == pouvait être dangereux et ne pas savoir, je vais mal dormir pendant 10 ans là Alain !
Hors ligne
Cela n'est quand même pas si simple et je n'ai pas envie de m'étaler sur ce sujet qui dépasse quand même le cadre d'un forum pour débutant.
Tu peux cependant te documenter sur les headers HTTP (en php ou pas d'ailleurs).
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
okok je vais acheter des somnifères alors ...
Merci pour tout le reste
Dernière modification par JulioBox (17-07-2009 10:54:10)
Hors ligne
J'ai trouvé comment envoyer du POST sans formulaire MAIS je ne peux tout de même pas envoyer de TRUE, en tout cas, ça ne fonctionne tout de même pas...
Vite fait testé avec :
et
> edit : l'url passée est en fait : &username=1&password=1 DONC je me demande vraiment si c'est possible de passer TRUE
Rien ne fonctionne :]
Une idée Alain pour faire passer ce TRUE correctement ?
Sinon il me semble qu'on ne peut pas passer de TRUE validé avec un == de cette manière.
Merci
Dernière modification par JulioBox (17-07-2009 11:37:58)
Hors ligne
Sinon il me semble qu'on ne peut pas passer de TRUE
Si tu le dis...
Une idée Alain pour faire passer ce TRUE correctement ?
Non car je n'ai jamais eu à le faire, mais il y a tellement de façons de procéder, et j'ai pas envie de chercher.
Si tu ne veux pas utiliser === libre à toi, mais c'est une sécurité supplémentaire qui ne coute rien.
Comme je te l'ai déjà dis, c'est toi qui voie.
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
C'est pas "Si je le dis", je viens de tester et sans le bon pass/user on ne passe pas malgré le ==, je vais TOUT DE MEME mettre === mais voilà...
Tu me dis une chose, je le test et ça ne fonctionne quand même pas. Peut etre une configuration/option de php5 fait que ... aucune idée.
Bref, si quelqu'un sait passer un TRUE pour que la faille fonctionne, qu'il se manifeste, mon script reste donc blindé malgré sa simplicité !
Hors ligne
Pages :: 1