PHP beléptető bármilyen felhasználónévvel beenged
Sziasztok!
Van egy beléptető scriptem.
A Problémám az lenne, hogy bármilyen felhasználónévvel beenged.
A Jelszó működik!
A Form:PHP Része:
■ Van egy beléptető scriptem.
A Problémám az lenne, hogy bármilyen felhasználónévvel beenged.
A Jelszó működik!
A Form:
<form name="form1" method="post" action="lp.php">
<div id="login">
<h2 align="center"><b><?php echo $site_name; ?> Adminisztráció</b></h2>
<label for="username">Felhasználónév:</label>
<input name="myusername" type="text" id="myusername" />
<label for="password">Jelszó:</label>
<input name="mypassword" type="text" id="mypassword" />
<input type="submit" value="Belépés" />
<div class="clear"></div>
</div>
</form>
<?php
session_start();
ob_start();
?>
<? include('../config/db_con.php'); ?>
<?
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$myusername = $_POST['myusername'];
$mypassword = md5($_POST['mypassword']);
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM `settings` WHERE apass='$mypassword'";
$result=mysql_query($sql);
$count = mysql_num_rows($result);
if($count==1){
session_register("myusername");
session_register("mypassword");
header("location:index.php");
} else {
echo "<meta charset='UTF-8'><meta http-equiv='refresh' content='3;URL=login.php'><div align='center'><b>A Felhasználónév és jelszó nem egyezik!</b><br /><a href='login.php'>Vissza</a></div>";
}
ob_flush();
?>
Ellenőrizni kellene
Megvan a megoldás:
md5-el kódolva van a jelszó. vagy hogy Gondolod?
salt
hasznos írás a témában
Só
Elég?
Annyi a nehézítés még ebben hogy minden hash elején mondjuk 3 a végén meg 5 random karakter van (ezek a számok weboldalanként változik)...
Ennek amúgy az a gyenge pontja, hogy ha úgy feltörik az oldalt, hogy hozzáférnek a forrásfilehoz akkor látják hogy mennyit kell levágni elöl és mennyit kellá hátul...
Na tehát ez a megoldás milyen? Elfogadható? Vagy tök gyenge?
Nem értem
Ha viszont a tárolt érték MD5($pass + "/" + $salt + "/" + $username) akkor ezt minden egyes userhez le kell gártani, vagyis már nem szótár, nem csökkenti a műveletigényt.
A szokásosnál hosszabb hash-ekből egyből látszik, hogy van valami turpisság. Ha sózás nélkül tárolod a hash-eket, akkor összevetve egy szótárral egyből rájöhet a támadó, hogy honnan hány bitet kell levágni.
így
4i22nwbcb559cd9d05046da8ec6ea3175a834cql5
s43j35e20c0bddf6416a2021f18b6b05784e88bso
szerk: ja bocs az kimaradt hogy egy "md5 szótáron" pörgeti végig... oké igazad van...
Az elejéről (legalább) 6
:)
itt van pár tényleges kód amit az oldal generál:
f1fc27298e032d80f4f1bed55c915e3e46ce260
b0e9824e491705cd878c7883d9be7ffd45d35f9
8eb72cad068afd8cecaae8875eceed8cda0ee2f
5c4e8aa490f3a60de0a147ccc5557144253a032
39 length
Ha már ilyen megoldást választasz akkor legyen 40 karakter ami sha1-nek fog tűnni.
Én úgy szoktattam hogy minden jelszót lesózók de jelszavanként random sóval. (amit a jelszó mellett letárolok). Brute froce-olja az aki akarja, de ezzel szivárványtáblák lehetőségét kilövöm.
SHA1(MD5($pass.$unqiueSalt))
Ötleted sincs?