Autor | Zpráva | ||
---|---|---|---|
Norbert Pelc Profil |
#1 · Zasláno: 4. 10. 2006, 19:34:58
mám administraci, kterou potřebuji zaheslovat.
mam index.php- muze to byt takto??? <?xml version="1.0" encoding="utf-8"?> a databázi je to dobre????? CREATE TABLE `users` ( a jak mam zapsat uzivatele do teto databaze??? Prosim poradte dekuji moc |
||
peta Profil * |
#2 · Zasláno: 4. 10. 2006, 20:50:15
WWW stránky manuálu: http://mm.gene.cz/
dotaz typu: $tab = $tb0."user"; $dotaz = "INSERT INTO $tab ($x) VALUES ($y)"; mysql_query($dotaz) or die("<hr>$dotaz<hr>DB error: add new user = ".mysql_error()); kde $x je retezec pole nazvu SQL promennych, ktere chces zapsat $y je retezec pole udaju promennych cili $x="'login','password'"; $y="'$user','$password'"; Vyhodou proti reseni $dotaz = "INSERT INTO $tab VALUES ($y)"; je, ze pri rozsireni "users" tabulky nemusis prepisovat vsechny dotazy a neobjevi se ti chyby. Proste pojedou, ale nektere udaje se nebudou zaznamenavat. Obvykle je tam ani nove udaje nechces, pouze na vybranych mistech. |
||
peta Profil * |
#3 · Zasláno: 4. 10. 2006, 20:56:23
mimochodem, nemas to vubec osetrene.
$query = "SELECT * FROM users WHERE login ='".$_POST['login']."'"; co se stale, kdyz $_POST = "", tudiz $_POST['login']=-1 (undefined) a pokud zapnes error_reporting(E_ALL); tak ti hned naskoci chyba. Nehlede na to, ze v tomto pripade zbytecne zatezujes server SQL dotazem a to maji nektere hostingy omezeny jejich pocet. Ale takovy hosting bych nebral :) |
||
Norbert Pelc Profil |
#4 · Zasláno: 4. 10. 2006, 20:58:17 · Upravil/a: Norbert Pelc
A jak zapisu ty uzivatele??
Prosím nejak mi to nejde. napíši mi někdo jak to má vypadat??? |
||
Casero Profil |
#5 · Zasláno: 4. 10. 2006, 21:04:10
insert into tabulka jmeno=franta
|
||
Suji Profil |
#6 · Zasláno: 5. 10. 2006, 13:27:22
Norbert Pelc
V tomto pripade ma peta pravdu, neni tam osetreno zda se neco z formulare poslalo a zda je user v databazi. Poslal jsem ti ten kod nedavno v diskusi s tim, ze jsem cekal, ze se podivas jak to ma zhruba vypadat a tuhle logiku si pridas sam, jen jsem to tam asi zapomnel napsat, za coz se omlouvam. |
||
Joker Profil |
#7 · Zasláno: 5. 10. 2006, 16:47:17 · Upravil/a: Joker
Suji
Nehledě na to, že to půjde i hacknout. Sice ne úplně snadno, ale přece jen dám dohromady ukázku, jak se do toho s trochou štěstí nabourat: jméno: ' or heslo='6e017b5464f820a6c1bb5e9f6d711a667a80d8ea' heslo: heslo Vznikne dotaz: SELECT * FROM users WHERE login ='' or heslo='6e017b5464f820a6c1bb5e9f6d711a667a80d8ea'; který mi vrátí uživatele s heslem "heslo". Porovnání hesla pak už samozřejmě vyjde, protože jsem si vybral uživatele, který to heslo má a pod jeho jménem budu přihlášený do systému. Podmínkou úspěchu je, aby v systému byl alespoň jeden uživatel s daným heslem. Pokud bude v systému alespoň několik desítek registrovaných uživatelů a vypíšu si tak pět pravděpodobných hesel pro tu danou stránku, je pravděpodobnost úspěchu velmi vysoká. |
||
Suji Profil |
#8 · Zasláno: 5. 10. 2006, 19:19:36
Joker
to mas sice pravdu, ale neprojdes skrz overeni if (strcmp($pass1, $user['password'])==0 and strcmp($_POST['login'], $user['login'])==0) { $logged = true; } |
||
Suji Profil |
#9 · Zasláno: 5. 10. 2006, 19:25:38 · Upravil/a: Suji
Ale hlavni problem je, ze kdyz jsem Norbertovi kod posilal, bral jsem to jako ukazku, ne hotove reseni. Je to cast kodu z hotove stranky, odstranil jsem z nej vsak nektere casti vcetne overovani vstupu nebo treba kontroly zda nejaky takovy user existuje. Nechtel jsem uverejnit cely kod ze ktereho by navic bylo zrejme kde je nasazeny.
|
||
krteczek Profil |
#10 · Zasláno: 5. 10. 2006, 19:46:36
při zápisu uživatelů do databáze ber v potaz několik věci:
1 v případě že je nastaveno magic_quotes_gpc na on použij následující kod:
2. jmeno prožeň vždycky funkcí htmlspecialchars() 3. heslo prožeň funkcí md5(); nebo sha1(); 4. při zápisu do databáze použij funkci addslashes(); pro všechny nečíselné proměnné 5. při výběru z databáze použij funkci stripslashes(); 6. ověřuj jestli proměnná existuje a pokud ano jestli není prázdná (očekávám text): if((!empty($_POST['promenna'])) AND (trim($_POST['promenna']) != '')) a další "drobnosti" krteczek |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0