Hoi, ik heb net een inlog script gemaakt, en ik vraag me af of het veilig is.
Het wachtwoord + gebruikersnaam zit in de mysql database
het wachtwoord is encrypted als "sha1" en "md5"
Als je het gebruikersnaam invult + het juiste wachtwoord krijg je een link naar veilig.php?naam=jounaam
Op deze pagina bevind zich dan jou stukje beveiligde pagina
Ik heb hem zelf al getest met andere wachtwoorden, gebruikersnamen, cookie veranderen, andere ?naam=jounaam invullen dan dat er in de cookie staat.

Login form:
Niets bijzonders, twee velden gb = gebruikersnaam en ww = wachtwoord

inloggen:
<?php
if(isset($_POST['gb'])){
$gb = $_POST['gb'];
}else{
die('U heeft geen gebruikersnaam ingevult');
}
if(isset($_POST['ww'])){
$ww = sha1(md5($_POST['ww']));
}else{
die('U heeft geen wachtwoord ingevult');
}


$gbsql = "SELECT naam,wachtwoord FROM gebruikers WHERE naam = '".$gb."'";
$res = mysql_query($gbsql);

if(mysql_num_rows($res) != 1)
{
die('Het door u ingevoerde gebruikersnaam bestaat niet');
}

while ($obj = mysql_fetch_object($res)){

if($gb == $obj->naam and $ww == $obj->wachtwoord){

echo 'u bent ingelogd<br /><br />';
setcookie("vitenet", $gb.".".$ww, time() + 1800);
echo '<a href="veilig.php?naam='.$gb.'">Klik hier om verder te gaan</a>';
}else{
echo 'U heeft een foutief wachtwoord of gebruikersnaam ingvult';
}
}
?>

En de veilige pagina:

<?php
include('../db.php');
if (isset($_GET['naam']))
{
$naam = $_GET['naam'];
}else
{
die('U moet wel een website selecteren');
}

$cookie = $_COOKIE['vitenet'];
$cookie = explode('.',$cookie);

if($cookie[0] != $naam){
die('U moet eerst inloggen om de site <strong>'.$naam.'</strong> te beheren');
}

$gbsql = "SELECT naam,wachtwoord FROM gebruikers WHERE naam = '".$naam."'";
$res = mysql_query($gbsql);
while ($obj = mysql_fetch_object($res)){
$name = $obj->naam;
$wachtwoord = $obj->wachtwoord;
}
if($cookie[0] != $name){
die('U moet eerst inloggen om de site <strong>'.$naam.'</strong> te beheren');
}
if($cookie[1] != $wachtwoord){
die('U moet eerst inloggen om de site <strong>'.$naam.'</strong> te beheren');
}
echo 'Dit is een veilige pagina';
?>
Nouw met een beetje sql injection kom je hier al erg ver mee!

<?php
mysql_real_escape_string();
?>

GR. mebus
owja... is ook zo...
die
<?php
mysql_real_escape_string();
?>
Doet zo ongeveer het zelfde als
<?php
addslashes();
?>
Ofniet?

Dit is idd wel een goede opmerking, tot nu toe ben ik dat telkens nog vergeten... :$
Beetje dwaze opmerking misschien, maar je kan deze regel > die('Het door u ingevoerde gebruikersnaam bestaat niet'); < misschien vervangen door > die('De opgegeven gebruikersnaam en/of wachtwoord kon niet worden gevonden'); < .

Kwestie van het 'raden' tegen te gaan :) . Beetje dwaas, maar geloof me.. soms is het redelijk effectief :D
Oke, het zal misschien geen groot verschil maken, maar alle beetje helpen ;)
Zo denk ik er ook over :)

Voor de rest knap werk hoor ;) !
antwoordt op je vraag:

Nee

Ik snap het nut van je query niet.... waarom controleer je in hemelsnaam alleen op gebruikersnaam?
Op de tweede pagina?

Deze haalt de gebruikersnaam + wachtwoord uit de database en vervolgens wordt deze controlleerd of wat in de cookie staat ook in de database staat.

Hou zou het dan beter kunnen?

Reageren