ugrás a tartalomhoz

PHP beléptető bármilyen felhasználónévvel beenged

KardiWeb · 2011. Ápr. 26. (K), 20.20
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:
<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 Része:
<?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();
?>
 
1

Ellenőrizni kellene

Poetro · 2011. Ápr. 26. (K), 20.24
Ellenőrizni kellene azt is, hogy az adott felhasználó névhez tartozik-e a jelszó:
$sql="SELECT * FROM `settings` WHERE aname = '$myusername' AND apass='$mypassword'";
Persze nem tudom, minek hívják a felhasználó név oszlopot az adatbázisban. Másik jó tanács: ne tárolj az adatbázisban kódolatlan jelszót. Vagy egy megfelelően sózott hash-t tárolj, vagy pedig legalább valami kódolási algoritmust használj.
3

Megvan a megoldás:

KardiWeb · 2011. Ápr. 26. (K), 20.34
$sql="SELECT * FROM `settings` WHERE auser='$myusername' and apass='$mypassword'";
Jól be néztem :(

md5-el kódolva van a jelszó. vagy hogy Gondolod?
4

salt

Crystal · 2011. Ápr. 29. (P), 16.50
meg kéne még sózni
hasznos írás a témában
5

vbence · 2011. Ápr. 30. (Szo), 16.56
Szerintem itt ez a legkisebb probléma ;)
6

Elég?

unregistered · 2011. Május. 3. (K), 20.47
Én bonyolításra annyit használok hogy a minden hash elejére és végére egy fix számú random karaktersort teszek, visszaalakítás előtt meg levágom...
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?
7

Nem értem

vbence · 2011. Május. 3. (K), 22.04
Sózni a hashelés előtt szokás. Ha site-ra jellemző hasht használsz, akkor a site-ra jellemző szótár állítható össze. Vagyis ha tudjuk hogy van az MD5("jelszó" + "/só") akkor ezt az összes user jelszavának visszafejtéséhez felhasználhatjuk.

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.
8

így

unregistered · 2011. Május. 3. (K), 22.43
Na pl ebből neked egyértelmű hogy honnan mennyit kell levágni?

4i22nwbcb559cd9d05046da8ec6ea3175a834cql5
s43j35e20c0bddf6416a2021f18b6b05784e88bso

szerk: ja bocs az kimaradt hogy egy "md5 szótáron" pörgeti végig... oké igazad van...
9

Az elejéről (legalább) 6

vbence · 2011. Május. 4. (Sze), 13.39
Az elejéről (legalább) 6 a végéről (legalább) 3, de nagyobb minta alapján biztosabbat tudnék mondani ;)
10

:)

unregistered · 2011. Május. 4. (Sze), 17.09
na a fenti csak példa volt, a wikiről kinézve és randomra összeírva (hexát áthágva)...

itt van pár tényleges kód amit az oldal generál:

4a2e97a1edf654903c1e53b0b05531a82b2ef0c
f1fc27298e032d80f4f1bed55c915e3e46ce260
b0e9824e491705cd878c7883d9be7ffd45d35f9
8eb72cad068afd8cecaae8875eceed8cda0ee2f
5c4e8aa490f3a60de0a147ccc5557144253a032
11

39 length

solkprog · 2011. Május. 4. (Sze), 19.01
A 39 karakterhosszúság rögtön gyanússá teszi a hash-t. innentől kezdve én megnézem hogy hogyan generálod le hasht, mert kitudja hátha az nem is hash hanem titkosított szöveg. (amit secperc alatt visszalehetne fejteni..) Oké nem az, viszont azért én örülnék (mind gonosz rosszfiú) az végül-is egy sima hash amit szivárványtáblázhatók.

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))
2

Ötleted sincs?

Hidvégi Gábor · 2011. Ápr. 26. (K), 20.25
Ötleted sincs?