<?
ob_start();	
session_start();
mysql_connect("localhost",*,*);
mysql_select_db(*);

if(isset($_POST['login']))
{
	$naam = $_POST['naam'];
	$wachtwoord = $_POST['pass'];
	$md5 = md5($wachtwoord);

	$sql = "SELECT * FROM `sta_login` WHERE `naam` = '".$naam."' AND `pass` = '".$md5."'";
	$query = mysql_query($sql);

	if(mysql_num_rows($query) == 1)
	{
		echo "Het is gelukt";
	}
	
	else
	{
		echo "Niet gelukt<br><a href=\"javascript:history.back(-1)\">Opnieuw</a>";
	}
}

else
{
?>
<body>
<p>&nbsp;</p>
	<table border="0" cellspacing="2" cellpadding="0">
		<form action="<? $_SERVER['PHP_SELF'] ?>" method="post">
			<tr>
				<td align="right">Naam&nbsp;</td>
				<td><input name="naam" type="text" style="width:120px;font-size:13px;"></td>
			</tr>
			<tr>
				<td align="right">Wachtwoord&nbsp;</td>
				<td><input name="pass" type="password" style="width:120px;font-size:13px;"></td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td align="right"><input style="width:70px;font-size:13px;" name="login" type="submit" value="Login!"></td>
			</tr>
		</form>
	</table>
</body>
<?
}
?>


Dit simpele scriptje gebruik ik meestal, maar nu vraag ik me af hoe je dit kan kraken en hoe dit opgelost kan worden.

Bij voorbaat dank,
Casper

Ps. Het script staat ook online zodat je kan testen: http://83.161.24.58/~casper/logintest.php
zeer onveilig.

je controleerd de input van de gebruiker niet. Dmv SQL-Injection kan een "kwaadwillend" persoon je database manipuleren en dat wil je niet :)

htmlentities
mysql_escape_string
mysql_real_escape_string
stripslashes
addslashes
htmlspecialchars

zoek deze functies eens op en kijk wat ze doen, je zal er wat aan hebben :)
Beste Casper, volgens mij is dit vrij veilig als je dit zo gebruikt.

Het enige wat je nog extra zou kunnen/moeten toevoegen is:


<?php
$naam = mysql_real_escape_string($_POST['naam']);
?>


ipv jou regel 9, verder denk ik dat je dat niet hoeft te doen bij $wachtwoord sinds je deze in md5 vergelijkt in je SQL query.

edit: php tags
Maar hoe kan een hacker nou precies zo'n stuk script invoegen (zoals bij MySQL Injection gebeurt) dat hij erin komt?
Dat vraag ik me nog wel af
Erik,

Ik citeer php.net,

mysql_real_escape_string (PHP 4 >= 4.3.0, PHP 5) :)

mysql_escape_string (PHP 4 >= 4.0.3, PHP 5)
hehe,

ik dacht dat het anders was :)

Bedankt
Bedankt nog voor dat artikel, erg interessant!
graag gedaan :)

ik heb er zelf ook veel aan gehad en kijk er nog steeds regelmatig in.

Reageren