ugrás a tartalomhoz

Véleményt a beléptető felületemre

Pallosi Péter · 2012. Nov. 3. (Szo), 19.29
Sziasztok hétfőre le kell adjak egy házi feladatot feladatom!
Hoz létre egy beléptető formot és a legújabb technikával formázd meg!+jquery egyéni ötletekkel,php adatbázis nélküli belépéssel='csak hibák kezelése'

Tehát én meg is csináltam,de tanácsot kérnék hogy mit kéne változtatni,hogy megkapjam a 100%ot rá?
Szerintem eléggé pofás lett :) de valamit még változtatni akarok,de nem tudom mit :) esetleg ti?
Kritikák érdekelnek a legjobban!
Utólag szerk:
Oldal
 
1

Username && Password

Pallosi Péter · 2012. Nov. 3. (Szo), 19.30
Username:admin
Password:admin
2

Esetleg valami link ahol

aky22 · 2012. Nov. 3. (Szo), 19.31
Esetleg valami link ahol elérhető?
3

Elnézést

Pallosi Péter · 2012. Nov. 3. (Szo), 19.33
Elnézést :) csak siettem Itt
4

Én esetleg azon módosítanék

aky22 · 2012. Nov. 3. (Szo), 19.36
Én esetleg azon módosítanék még, hogy az üzenetek (belépett stb.) ne az oldal tetején jelenjenek meg, hanem mondjuk a belépés felirat alatt
5

Értem!

Pallosi Péter · 2012. Nov. 3. (Szo), 19.40
De akkor ne legyen semmiféle háttérszín mondjuk,ha hiba akkor piros betű,ha jó akkor kékes :) szerkeztem
6

Üdv! Én szerintem annyival

wardemi · 2012. Nov. 3. (Szo), 20.13
Üdv!

Én szerintem annyival tudsz még hozzá tenni, hogy az alap lorem ipsum szöveg szerintem legyen nagyobb. Illetve a dobozon belüli két mező nincs teljesen középen vagy nem látszik hogy pont középen lenne. Még annyi talán, hogy nekem úgy lenne logikus hogy mikor kiúszik a kis ikon, hogy user-pw akkor a pw-s ikon inkább jobb oldalt ússzon kifelé.
8

Megtörtént

Pallosi Péter · 2012. Nov. 3. (Szo), 20.38
Megtörtént az átalakítás tökéletesen működik a php-t most egyenlőre kivettem mert szerintem jqueryvel iratom ki a hibákat!
7

Hiba

janoszen · 2012. Nov. 3. (Szo), 20.14
Ha hibás a belépés, ne töröld ki a usernevet.
9

Szerintetek?

Pallosi Péter · 2012. Nov. 3. (Szo), 21.09
Van a dobozom és,ha nem kapok felhasználónevet és jelszót akkor megváltoztatom a bordernek a színét pirosra ez szerintetek jó ötlet vagy valamilyen szöveges hibás írassak ki?
10

tippek tanácsok

Pallosi Péter · 2012. Nov. 3. (Szo), 21.40
Valaki aki nagyon toppon van a php biztonságában.
Tehát megírom a belépést adatbázis alapúra,de addig nem akarom elkezdeni amíg nem tudok biztonságos lekérdezést készíteni.

<?php
include_once('connect.php');

$username = mysql_real_escape_string($_POST['username']);
$password= mysql_real_escape_string(md5$_POST['password']);

$sql = "SELECT * FROM users WHERE username = '$username' && password = '$password'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);

if($row[0] > 0){
echo'Belépett';
else{
echo'Hiba';
}
}
ez egy eléggé alapszintű beléptető rendszer ezen kívül még a kód tartalmaz süti kezelést és átirányítást,de az lényegtelen!
Segítséget kérnék ennél biztonságosabb lekérdezéshez 
?>
11

Tippek

Pepita · 2012. Nov. 5. (H), 01.02
- Nekem most nem műxik sehogy sem a linken... (IE8)
- A legalapvetőbb dolgok megvannak, de:
- Ha md5-öt (v. sha1-et) használsz hash-elésre, akkor a jelszón kb. felesleges a mysql_real_escape_string, mert a hash mindkét fv esetén egy hexadecimális szám lesz, tehát nincs benne semmilyen idézőjel, stb.
- md5 helyett az sha1 annyiból jobb, hogy hosszabb (40 karakter) stringet ad vissza, így munkásabb a "kitalálása".
- Mindenképpen érdemes az eltárolt, hash-elt kódot még a hash előtt "sózni". (Belekeversz a titkosítandó jelszó karakterei közé más karaktereket is, saját szabályod szerint, fantáziálj!) Így majdnem lehetetlen visszafejteni.
- Ha valahol ki is írod majd a felhasználónevet (vagy más Júzer-adatot), akkor azt majd még szűrni kell XSS, CSRF, stb. ellen. Ezt kiírás előtt szokás, de felhasználóknál megteheted már a regeléskor, és a szűrt adatot szúrod a táblába. (Így csak egyszer kell szűrni.) Ez más, "ismeretlen" Júzertől jövő adatra is érvényes.
- Azt nem tudom, hogy mi van az adattábla első oszlopában, de valószínűleg id. Akkor az if($row[0] > 0) feltételnek nem sok értelme van. Én szoktam használni egy "státusz" (tinyint(4)) mezőt is, ami pl. ha >1, akkor aktív a Júzer. Ha 0, akkor regelt, de még nem engedélyezett, ha -1, akkor letiltott, ha -2, akkor törölt, etc. Sok egyébre is lehet ezt használni, beléptetéskor WHERE `statusz` > '1' formában szoktam
ellenőrizni.
- Arra nézve, hogy sikeres-e a belépés, jobb megoldás a visszakapott eredmény számának az ellenőrzése (mysql_num_rows($res) === 1), így mégegy védelmed van esetleges injection ellen. Ha OK (=== 1), akkor vedd ki tömbbe a sort, ...
- Sütikezelés. Ha ez azt a célt szolgálja, hogy "maradjon bejelentkezve", akkor az én (biztonsági) elveimmel ellenkezik. Elég annyi is, hogy a látogatók többsége nem is tudja mi ez, eszébe sem jut, hogy ha számára idegen gépről logol, akkor jelentkezzen ki a végén... Továbbá nagyon nehéz azt elérni, hogy a süti ellopásával (kémprogik) ne lehessen máshonnét u.azt felhasználni. Én az expires_on_close híve vagyok, - mondjuk a böngészőt is ott lehet felejteni nyitva.

Szerk.: ja, ezeket itteni cikkekben is olvashatod, nézz körül, mert ez bővebb téma!
12

- md5 helyett az sha1

tgr · 2012. Nov. 5. (H), 11.19
- md5 helyett az sha1 annyiból jobb, hogy hosszabb (40 karakter) stringet ad vissza, így munkásabb a "kitalálása".


Teljesen mindegy, az md5 is bőven elég hosszú ahhoz, hogy lehetetlen legyen kitalálni. Más jellegű probléma van mindkettővel (túl gyorsan számolhatók).
13

- ne használj mysql-t,

tgr · 2012. Nov. 5. (H), 11.46
- ne használj mysql-t, elavult. A modern MySQL driver a mysqli, de még jobb valami adatbázisfüggetlen csomagot használni, pl. PDO.
- ne kézzel escapelj, használj paraméteres lekérdezéseket. Egyrészt tömörebb és áttekinthetőbb kódot eredményez, másrészt nehezebb hibázni, harmadrészt nem kell amiatt aggódnod, hogy esetleg rosszul adod meg a karakterkódolást, és az escape ellenére is sebezhető vagy.
- && helyett az AND olvashatóbb is, hordozhatóbb is (standard SQL, az && viszont MySQL-specifikus).
- ahogy már elhangzott, hasheld a jelszavaidat. PHP 5.5-től lesz majd beépitett nyelvi támogatás, addig ezt a könyvtárat be kell includolni hozzá. Regisztrációnál bekéred a jelszót, és password_hash($jelszo, PASSWORD_BCRYPT) eredményét (jelszó hash) mented el az adatbázisba, ellenőrzésnél bekéred a jelszót, kiolvasod a hash-t az adatbázisból, és password_verify($jelszo, $hash) megmondja, helyes volt-e a jelszó.
- általában nem illik egy SELECT * eredményére számmal hivatkozni. Részben nehezen olvasható kódot eredményez, részben ha valamiért megváltozik az oszlopok sorrendje az adatbázisban (mentésből visszaálltás pl.), akkor borul az egész. Használd a *_fetch_assoc függvényeket, és akkor $row['id'] és hasonló alakban tudsz hivatkozni a mezőkre.
- komoly bejelentkező oldalra throttling is kell, azaz megakadályozni, hogy a támadó szisztematikusan végigpróbálgassa a jelszavakat.
- a hibaüzenetben érdemes jelezni valahogy, hogy a jelszó volt rossz, vagy nincs is ilyen user.