<? if(empty($username_from_cookie)){?>
<form method="POST" name="headlogin" action="login.php">
<input type="text" name="username" placeholder="Kullanıcı Adı" class="giris-text" />
<input type="password" name="password" placeholder="Şifre" class="giris-text" />
<input type="submit" name="loginhead" style="background:url(<?=$Url?>images/giris2.png); border:0px; outline:none; width:78px; height:34px;" class="giris-image" value="">
<a href="kayit-ol.php"><img src="<?=$Url?>images/uye2.png" class="giris-image" alt="Kayıt Ol" /></a>
</form>
<? }else{
$query = "SELECT * FROM users WHERE `username`='$username_from_cookie'";
$result = mysql_query($query) or die("Couldn't execute query");
while ($row= mysql_fetch_array($result)) {
$avatar=$row["avatar"];
}
?>
<div class="giris">
<a href="panel.php"><img src="<?=$Url?><?=$avatar?>" width="32" height="32" style="opacity:0.3;" alt="<?=$username_from_cookie?>"></a>
Hoşgeldiniz <?=$row["permissions"];?>"<a href="panel.php"><?=$username_from_cookie?></a>" İyi vakit geçirmeniz dileğiyle
<a href="logout.php" style="color:#f00;">Çıkış Yap</a>
</div>
<? } ?> Şu koddaki açığı nasıl kapatırım?
6
●534
- 22-02-2013, 20:08:24Merhaba basit bi login kodu yaptım ancak anladığım kadarıyla açık var.. nasıl kapatacağımı bulamadım bir türlü?
- 22-02-2013, 21:27:05Üyeliği durdurulduDeğişken isimlerinden anladığım kadarıyla username yi cookie den çekip beni hatırla tarzı bir sistem yapıyorsun
Kullanıcı cookie deki username yi değiştirdiği zaman başka bir kullanıcı ile giriş yapmış olacak, cookie de bu tür verileri saklama ya da sağlam bir şekilde şifrelemelisin
- 22-02-2013, 21:43:49Üyeliği durdurulduCookie konusu doğrudur aşağıdaki gibi değiştirirsen sql injection a karşı önlem alabilirsin
<?php if(empty($username_from_cookie)){?> <form method="POST" name="headlogin" action="login.php"> <input type="text" name="username" placeholder="Kullanici Adi" class="giris-text" /> <input type="password" name="password" placeholder="Sifre" class="giris-text" /> <input type="submit" name="loginhead" style="background:url(<?=$Url?>images/giris2.png); border:0px; outline:none; width:78px; height:34px;" class="giris-image" value=""> <a href="kayit-ol.php"><img src="<?=$Url?>images/uye2.png" class="giris-image" alt="Kayit Ol" /></a> </form> <?php }else{ $username_from_cookie = mysql_real_escape_string($username_from_cookie); $query = "SELECT * FROM users WHERE `username`='$username_from_cookie'"; $result = mysql_query($query) or die("Couldn't execute query"); while ($row= mysql_fetch_array($result)) { $avatar=$row["avatar"]; } ?> <div class="giris"> <a href="panel.php"><img src="<?=$Url?><?=$avatar?>" width="32" height="32" style="opacity:0.3;" alt="<?=$username_from_cookie?>"></a> Hosgeldiniz <?=$row["permissions"];?>"<a href="panel.php"><?=$username_from_cookie?></a>" Iyi vakit geçirmeniz dilegiyle <a href="logout.php" style="color:#f00;">Çikis Yap</a> </div> <?php } ?> - 23-02-2013, 06:19:28Üyeliği durdurulduZaten orada bir sorun yokBurti adlı üyeden alıntı: mesajı görüntüle
$query = "SELECT * FROM users WHERE `username`='$username_from_cookie'";
kullanmışsın mesela, eğer yukarılarda bir yerlerde$username_from_cookie = $_COOKIE['username'];
şeklinde bir şey kullandıysan, ve mesela, örnek olarak kullanıcı kendi pc sindeki cookie yi değiştirip 'admin' yaptıysa yukarıdaki sorgu
SELECT * FROM users WHERE username = 'admin'
olacak, dolayısı ile admin olarak giriş yapmış olacak

Kullanıcı cookie deki username yi değiştirdiği zaman başka bir kullanıcı ile giriş yapmış olacak, cookie de bu tür verileri saklama ya da sağlam bir şekilde şifrelemelisin