keitarosan

  • Signature
    >> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
  • Site web
  • Nombre de sujets
    6
  • Nombre de messages
    190
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

keitarosan
le 14/02/2005 à 17:13
PHP d'authentification
euh, t'a pas du saisir ;)

si tu utilise mysql_escape_string() ou autre, de toute facon, il peut pas faire de sql injection ^^

justement, c'est pour enpecher cela :)

Car meme avec juste le login, si c'est pas protégé, on fait du sql injection :)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 14/02/2005 à 17:04
PHP d'authentification
le sql injection et le password, ca n'a rien a voir ;)

Le sql injection, c'est juste le fait d'avoir une requete a un moment, dont certaines valeurs sont des variables php.

Si ces variables ne sont pas protégées, (avec des addslashes(), et mieux encore mysql_escape_string()), alors toute personne malintentionnée qui connait la methode, peut faire un peu ce quelle veut, et descendre toute la base de données ;)

Donc qu'on est que le login, ou que le password, ou les deux, c'est exactement pareil :)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 14/02/2005 à 16:46
PHP d'authentification
oui, il faut securiser ton code, sinon tu te retrouve avec du sql injection ^^.

autrement dit, je peux rentrer sur ton site rien qu'en voyant ta requete, sans avoir de login et password...

Alors faut faire super gaffe...

De plus, evite les balise <meta>, c'est pas terrible.

Tu as deja un header("Location: xxx.php"), alors utilise les meme pour rafrachir la page actuelle, c'est un peu plus propre :)
Pense aussi a mettre un exit(0); juste apres le header();, comme ca, pas besoin de continuer a faire des verif sur le restant du script et de la page :)

Enfin, tu peux tout simplement faire pour la requete:

<?php

$sql = "
SELECT
login,
pass
FROM
membres
WHERE
login = '$login' AND
pass = '$pass'
";

?>

ensuite, tu verifie que $req est different de 0, et si c'est le cas, c'est que c'est le bon login et password.
Pas besoin de faire un fetch_assoc puisque le user a deja fait saisi le login et password.

d'ou:
<?php

$req = mysql_query($sql, $connection) or die('error making query '.$sql.''.mysql_error());

// On teste s'il trouve bien le login rentrée
if($req !== 0)
{
$_SESSION['login'] = $login;
$_SESSION['pass'] = $pass;
header ('Location: page_membre.php');
}
else
{
echo 'Votre login ou votre pass ne sont pas bons';
echo '<meta http-equiv="refresh" content="0;URL=login.html">';
}

?>


Voila, je précise aussi que votre enchainement n'est pas logique ;)

S'il ne trouve pas le login, on va a la page inscription. (1ere indication pour une personne malveillante: ce login existe pas...)

Si le login existe mais pas le bon mot de passe, hop, on met un message 'Login ou Pass incorect', et ca, c'est pas logique, vu que dans ce cas la, une personne malveillante saura forcément que c'est le pass qui n'est pas bon.


Enfin, pour terminer, il est inutile de stocker le password en session, et c'est meme plutot dangereux.
Car si une personne malveillante trouve le moyen de recup l'info, dans ce cas il a le mot de passe. Bon, celui ci est hashé en md5(), certe, mais on peut toujours faire trouver un dico des équivalence md5()/mot en clair.
Le login suffit, et a la limite, un nombre aléatoire ^^.
D'ailleur, pour le login, c'est pas terrible non plus, le pseudo serait plus logique, et moins dangereux.
Un utilisateur basique mettra bien souvent un login/password identique.
(j'ai fait le test avec mon patron, ca a marché :D)

Donc voila voila, gaffe a la securité, car une session de login, c'est toujours un point sensible, et plus le site fonctionnera, plus on tentera de l'attaquer...

KeitaroSan
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 14/02/2005 à 14:27
newletter
t'as un serveur smtp ?

Car si tu travailles en local sur ton pc, il te faut un serveur smtp pour envoyer les mails.

Si tu travailles sur un serveur externe, verifie que celui ci a bien un serveur smtp.
(si c'est free, y en a un ^^)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 14/02/2005 à 13:09
petite question concernant la connection avec une base MySQL
désolé, je reviens sur ce que j'ai dis, apres demande de confirmation a mon chef de projet ^^.

C'est un peu mieux de laisser la connexion ouverte sur la page, mais ce n'est que pour une histoire de performance ;)

Enfin toute mes excuses quand meme ^^
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 14/02/2005 à 12:40
tester le serveur
limite autant avoir un fichier de connexion different par site ;)
ce qui au final, revient au meme ^^
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 14/02/2005 à 11:44
petite question concernant la connection avec une base MySQL
Désolé de te contredire, vengeur, mais c'est pas une erreur de programmation de se deconnecter et reconnecter plusieur fois sur une meme page.

J'aurais meme tendance a dire que c'est plus secure.
Car tu ouvre la connexion, t'execute la requete, et tu la referme. Y a pas de risque de laisser des ouverture...

De plus je bosse dans le developpement web, et mes chefs de projet nous l'on recommender !!
Et se sont pas des rigolos, ils y connaisset bcp plus que la plupart des gens ici, et meme que moi ;-)

Si vous voulez un exemple de classe qu'on utilise au boulot, donc professionnelle, regarder ma signature ou >> ici <<
;-)

KeitaroSan
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 14/02/2005 à 00:35
Classes et interfaces
Voila, pour faire propre, on va dire faire comme ca:

<?php
// ***** Attention *****
// c'est du PHP 5;
// *********************

//L'interface ne sert a rien a part
//garantir que l'on a bien définie toutes
//les methodes dans sa classe.


//class Operation
Class Operation
{
//déclaration des variables membres...
protected $reponse;
protected $operation;

//constructeur...
Public Function __construct()
{
$reponse = 0;
$operation = "";
}

Public function Addition($nb1, $nb2)
{
$this->reponse = $nb1 + $nb2;
$this->operation = "addition";
$this->Affiche();
}

Public function Soustraction($nb1, $nb2)
{
$this->reponse = $nb1 - $nb2;
$this->operation = "soustraction";
$this->Affiche();
}

Public function Multiplication($nb1, $nb2)
{
$this->reponse = $nb1 * $nb2;
$this->operation = "multiplication";
$this->Affiche();
}

Public function Division($nb1, $nb2)
{
$this->reponse = $nb1 / $nb2;
$this->operation = "division";
$this->Affiche();
}

Private function Affiche ()
{
echo ("
<p>Vous effectuez une $this->operation :</p>
$this->reponse");
}
}
echo '<html><body><h6>Calculs simples</h6>';
$calcul = new Operation();
$calcul->Addition (15, 5);
$calcul->Soustraction (15, 5);
$calcul->Multiplication (15, 5);
$calcul->Division (15, 5);
echo '</body></html>';

?>


Voila, je pense que c'est quand meme plus propre ;)

Ca ne sert pas a grand chose de faire plein de petites classes surtout pour faire une methode par classes, plus une qui peut etre commune a toutes.

En plus, je sais pas ou t'a choppé ca, mais il y avait pas mal d'erreur.
A mon avis, fait bien attention, parce que c'est du PHP5, d'une part, et d'autre part, tu n'as pas de bonnes bases pour faire de l'objet (donc des classes).

Donc essaye de commencer simplement par trouver de bon tutoriaux :)
J'ai pas regarder ici si c'etait bien.
Sinon sur www.nexen.net, tu fais une recherche sur "class", tu trouveras une doc assez bien expliquée.

Et pense a donner un nom bien explicite a tes methode. Effectue() est moins parlant que affiche, car dans ton code, le calcul ne s'effectue pas dans la methode effectue(), mais dans les autres...

Vala vala

KeitaroSan
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 13/02/2005 à 21:38
Classes et interfaces
Function __operation ($nb[1], $nb[2])

ton erreur bien de la, car je ne pense pas que tu puisse recupérer les valeurs des parametre dans un tableau.

Enfin tu peux passer un tableau en parametre, mais pas recuperer comme tu le fait...

a mon avis, si tu mets:
Function __operation ($nb1, $nb2)
ca fonctionneras mieux ;)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
LoadingChargement en cours