Har et ikke-sikkert login script.
Jeg har siddet og rodet med et login script i PHP/MySQL hele natten, og er ved at være færdig nu. Men jeg har opdaget at der er et kææmpe hul i sikkerheden, og det går ikke ;)Har lavet en login form med dette script som action:
<?
// Connect til databasen
include 'db.php';
// Dejlig nemt ;)
$username = $_POST['username'];
$password = $_POST['password'];
// Har de udfyldet begge felter?
if((!$username) || (!$password)){
include 'head.php';
echo "<center>Du skal udfylde Login, og Password før du kan komme videre</center><br>";
include 'login_form.htm'; // Hvis ikke, så stik dem en login form!
include 'foot.php';
exit(); // Og afslut scriptet!
}
// Valider username og password via databasen
$sql = mysql_query("SELECT * FROM forhandler_login WHERE username='$username' AND password='$password'");
$login_check = mysql_num_rows($sql);
if($login_check > 0){
while($row = mysql_fetch_array($sql)){
foreach( $row AS $key => $val ){
$$key = stripslashes( $val );
}
// Registrer session variabler
session_register('tlf');
$_SESSION['tlf'] = $username;
session_register('adress');
$_SESSION['adress'] = $adress;
session_register('city_zip');
$_SESSION['city_zip'] = $city_zip;
session_register('navn');
$_SESSION['navn'] = $navn;
header("Location: findex.php");
}
} else {
include 'head.php';
echo "<center>Du kunne ikke logges ind. Enten har du skrevet forkert Login eller Password. Prøv venligst igen:</center>";
include 'login_form.htm';
include 'foot.php';
}
?>
Det er jo også meget fint, men kan jo sagtens komme ind på den "hemmelige" side (findex.php) uden at logge ind.
Så snakkede jeg med en der sage at jeg bare skulle tilføje dette i toppen af alle de "hemmelige" sider:
function session_checker(){
if(!session_is_registered('username')){
include 'login_form.html';
exit();
}
}
session_start();
session_checker();
Det ville jo også virker.. Bare ikke heeeelt så godt som jeg kunne tænke mig ;) For med den løsning kan enhver lave sit eget lille script der registrere 'username', og så logge ind som hvem de havde lyst til..
Nej skal på en måde lave et lille stykke kode jeg includer i toppen af hver "hemmelig" side, som connecter til MySQL, og finder ud af om det er det rigtige login og pass...
Det skal lige siges at jeg har lært både PHP og MySQL løbende med den hjemmeside jeg har lavet som alt det her skal bruges til. Så det kan godt være at det er ekstremt næmt, men jeg kan ikke selv regne ud hvordan man skriver de 4-5 linier der skal til :P
På forhånd tak!
-Nimann
