Hogyan jelenjen meg a jelszó a lekérdező karakterláncban kódolva bejelentkezéskor?
Sziasztok!
Egy nagy problémába ütköztem.
Adott egy bejelentkező felület, amelyen ha bejelentkezek kiírja a jelszavamat kódolva, és hogy hány sor változott a mysql táblában.
No de. A lekérdező karakterlánba megjelenik a jelszavam teljes valójában.
encode.php?felh=thomk&jelszo=ajelszavam&okay=rendben
íme a kód:
Igaz a crypt helyett használhatnék md5-öt vagy sha5-öt.
Addig jó az egész, hogy az adatbázisba kódolva kerül be, de ne jelenjen már meg rendes valójában a jelszó a böngésző sorban.
Köszönöm előre is a segítséget!
■ Egy nagy problémába ütköztem.
Adott egy bejelentkező felület, amelyen ha bejelentkezek kiírja a jelszavamat kódolva, és hogy hány sor változott a mysql táblában.
No de. A lekérdező karakterlánba megjelenik a jelszavam teljes valójában.
encode.php?felh=thomk&jelszo=ajelszavam&okay=rendben
íme a kód:
<?php
include "db/database.php"; //a mysql-hez csatizás
$felh = $_GET['felh'];
$jelszo = $_GET['jelszo'];
$kodolt = crypt($jelszo);
if ($kodolt != "" && $felh != "" ){
$parancs = "UPDATE users SET jelszo='$kodolt' WHERE user='$felh'";
mysql_query($parancs);
print "\n\n".$kodolt."\n\n";
print "Változott sorok: ".mysql_affected_rows()." --";
} //igaz itt lehetne másik if is, hogy ha nincs ilyen felh az adatbázisba, akkor addjon hozzá. de az én esetembe ez nem nagyon fontos.
?>
<html>
<form method="get" action="<? print $_SERVER['PHP_SELF'] ?>">Felh:<input type="text" name="felh" />Kódolandó password:<input height="14" width="95" type="password" name="jelszo" /><input height="14" width="50" type="submit" name="okay" value="rendben" /></form>
<?
mysql_close($mysql); ?>
include "db/database.php"; //a mysql-hez csatizás
$felh = $_GET['felh'];
$jelszo = $_GET['jelszo'];
$kodolt = crypt($jelszo);
if ($kodolt != "" && $felh != "" ){
$parancs = "UPDATE users SET jelszo='$kodolt' WHERE user='$felh'";
mysql_query($parancs);
print "\n\n".$kodolt."\n\n";
print "Változott sorok: ".mysql_affected_rows()." --";
} //igaz itt lehetne másik if is, hogy ha nincs ilyen felh az adatbázisba, akkor addjon hozzá. de az én esetembe ez nem nagyon fontos.
?>
<html>
<form method="get" action="<? print $_SERVER['PHP_SELF'] ?>">Felh:<input type="text" name="felh" />Kódolandó password:<input height="14" width="95" type="password" name="jelszo" /><input height="14" width="50" type="submit" name="okay" value="rendben" /></form>
<?
mysql_close($mysql); ?>
Igaz a crypt helyett használhatnék md5-öt vagy sha5-öt.
Addig jó az egész, hogy az adatbázisba kódolva kerül be, de ne jelenjen már meg rendes valójában a jelszó a böngésző sorban.
Köszönöm előre is a segítséget!
post
és onnan is szedd elő
és escapeld a felhasználói inputot
usernevem' OR '1'='1
Akkor az összes user jelszavát megváltoztattam, innentől meg csak meg kell próbálni belépni az admin vagy webmaster userrel és az általam megadott jelszóval aztán már lehet is garázdálkodni...
Köszi..
Már tudom miért írtam GET-et. :D Mert tegnap lekérdező karakterláncokkal szórakoztam, és a tankönyv azt írta, hogy azokhoz GET kell, és POST-al nem mennek.
Amúgy, zila, kifejtenéd bővebben ezt a biztonsági rést?
EDIT:
Jah az azé van mert, kódolni akarom a jelszavakat mysql-be, és ha beviszed a jelszót akkor azt kódolva rakja be a táblába.
Szal az direkt van úgy. Nyitni fogok egy másik témát kódolás ügyben, mert azzal is gondjaim vannak.
ne nyiss másikat
Oks
Köszönöm megint!
aspektusbeli probléma
Egyszerűbb lehetőség, ha a PHP saját session kezelését használod. Ekkor a login.php ami ellenőrzi a jelszó helyességét és ha helyes beállít egy ilyet: od
$_SESSION["felh"] = $_POST["felh"]
Innentől kezdve a többi PHP már a $_SESSION["felh"] -el dolgozik, és ha ez üres (nem sikerült a belépés) visszadobja a usert a login oldalra. Session autostart esetén nem is kell mással bonyolítanod a kódot.