Autor | Zpráva | ||
---|---|---|---|
lesiak307 Profil |
#1 · Zasláno: 19. 4. 2010, 18:03:51 · Upravil/a: lesiak307
(Kurnik!!! Prečo to nejde??? )
Pripravujem na stránke jednoduchý registračný formulár v ktorom sa zadá NICK, MAIL a HESLO. Prebehne kontrola, či sa v tab. dat. už takéto údaje nachádzajú. Ak sa ešte nenachádzajú, údaje sa zapíšu do tab. Zároveň sa ešte v tabulke do jedného stĺpca s názvom x zapíše 0. Taktiež sa na zadaný mail pošle overovací mail s odkazom napr: http://www.bunkovce.sk/registraciaukoncena.php?id=7&email=mail@mail.sk na dokončenie registrácie. Po kliknutí na tento odkaz by sa mala hodnota v tabuľke v stĺpci x zmeniť z 0 na 1. Overovacia stránka obsahuje: mysql_query("UPDATE uzivatelia SET x = 1 WHERE id=".$_GET["id"]." and email='".$_GET["email"]."';"); no akosi podmienka nefunguje. Neviem či som správne zapísal načítanie údajov z URL. (Celá registrácia mi ide, ale potvrdenie... Sedím na tým celý deň.) Prosím poraďte!! Ďakujem!!! |
||
Joker Profil |
#2 · Zasláno: 19. 4. 2010, 18:17:57 · Upravil/a: Joker
lesiak307:
„Prečo to nejde???“ Asi je to rozbité. Za větou stačí jeden vykřičník anebo otazník. Spíše než „Kurnik!!! Prečo to nejde??? :“ by nám daleko více pomohl konkrétní popis problému. Každopádně, tohle není dobrý nápad z několika důvodů: 1. Nikdy nedávejte vstupy od uživatele přímo do databázového dotazu, hledejte "SQL injection". 2. I když pominu SQL injection, tyhle aktivace se obvykle dělají kvůli ověření, že e-mail skutečně patří danému uživateli. K čemu to je v případě, že si aktivační adresu můžu snadno odhadnout (registraciaukoncena.php?id=<ID asi půjde zjistit>&email=<e-mail jsem zadal ve formuláři>)? |
||
lesiak307 Profil |
#3 · Zasláno: 19. 4. 2010, 20:47:24
[#2] Joker:
Takže asi budem musieť vymyslieť iné overovanie... Ale aj tak by som bol rád, ak by ste mi poradili, ako z URL adresy môžem vybrať napr: len to ID a MAIL. |
||
radas Profil * |
#4 · Zasláno: 19. 4. 2010, 20:53:13
nestačil by jen ověřovaci kod? ktery se vygeneruje a pak se da dobře ošetřit proti SQL injection když je čislo fajn pokračuj pokud ne die script..
|
||
lesiak307 Profil |
#5 · Zasláno: 19. 4. 2010, 21:00:14
[#4] radas:
ale to asi nebude stačiť pre ochranu proti tomu, aby niekoho zaregistrovala tretia osoba |
||
radas Profil * |
#6 · Zasláno: 19. 4. 2010, 21:11:23
proč ne?
příklad tabulka uživatelu ktera bude mit sloupce ktere jsou potřebne a dva navic prvni sloupec ověřeni druhy sloupec kod při registraci se vyplni udaje a do sloupce ověřeni se nastavi 0 a vygeneruje se třeba 6mistny kod ktery se pošle na email v kterem bude třeba odkaz na potvrezení registrace a v parametru bude id_nově_registrovaneho uživatele (což tam je viz prvni ukazka) a druhy parametr bude kod ... ověřovací script si vytahne podle těchto dvou čisle (ošetře přes intval a musi byt větší než 0) a pokud takovou kobinaci čisel db nalezne tak se uděla update ve sloupci ověřeni z 0 na 1 |
||
lesiak307 Profil |
#7 · Zasláno: 19. 4. 2010, 21:21:50
[#6] radas:
Tak to by šlo... no a toto je správne? UPDATE uzivatelia SET x = 1 WHERE id=".$_GET["id"]." and email='".$_GET["email"]."'; |
||
radas Profil * |
#8 · Zasláno: 19. 4. 2010, 21:24:53
nevidim v problem, ale neopomijel bych velmi dobrou radu od Joker
|
||
lesiak307 Profil |
#9 · Zasláno: 19. 4. 2010, 21:28:47
radas:
„neopomijel bych velmi dobrou radu od Joker“ takže cez $_POST? Ale post sa nezobrazuje v URL, takže to by som už nevedel ako ďalej |
||
radas Profil * |
#10 · Zasláno: 19. 4. 2010, 21:33:34
však jsem psal že
odkaz na potvrezení registrace a v parametru bude id_nově_registrovaneho uživatele (což tam je viz prvni ukazka) a druhy parametr bude kod .. to vše by bylo přes GET radou od Jokera jsem chtěl jen vyzdvihnout možné nebezpečí utoku ...že je dobre se na to zaměřit |
||
radas Profil * |
#11 · Zasláno: 19. 4. 2010, 21:37:59
tohle by se mohlo nově zaregistrovanému uživateli poslat do emailu :
echo '<a href="http://'.$www.'/user/autorizace.php?id='.$id.'&kod='.$kod' target="_blank">potvrzovací e-mail </a>; |
||
lesiak307 Profil |
#12 · Zasláno: 19. 4. 2010, 21:40:59
[#10] radas:
teraz ma napadlo, overovací mail by mohol obsahovať len odkaz na stránku s ďalším formulárom, do ktorého by sa zadalo manuálne prihlasovacie meno a ten overovací kód aby som absolútne vylúčil GET - ak je to také nebezpečné... |
||
radas Profil * |
#13 · Zasláno: 19. 4. 2010, 21:45:39
neni to tak nebezpečne když si na to člověk dava pozor...tim že tam bude formulař se budou muset prověřovat POST data (ktere se snadno můžou podstrčit ) a ne GET...takže je to nastejno...
|
||
lesiak307 Profil |
#14 · Zasláno: 19. 4. 2010, 21:53:24
radas:
„je to nastejno“ no, takže to budem riešiť asi nejak takto: „odkaz na potvrezení registrace a v parametru bude id_nově_registrovaneho uživatele (což tam je viz prvni ukazka) a druhy parametr bude kod“ - uvidím, čo to spraví... |
||
lesiak307 Profil |
#15 · Zasláno: 20. 4. 2010, 11:40:29 · Upravil/a: lesiak307
Chlapi, takže som to zmenil. Použil som náhodne vygenerovaný kód, nie mail. Taktiež heslo bude posolené SHA1. Pekne to ide...
K URL ešte. Už viem kde bola chyba. V URL adrese som mal : http://www.stranka.sk/registraciaukoncena.php?id=0&kod=00000 z URL mi stále vybralo len ID, ku kódu už nedošlo :) a to kôli amp; Takže som to zmenil na http://www.stranka.sk/registraciaukoncena.php?id=00&kod=00000 Ďakujem za pomoc |
||
lesiak307 Profil |
#16 · Zasláno: 20. 4. 2010, 11:46:08
Teraz ešte riešim mail() lebo obdržaný mail má blbé kódovanie.
|
||
nightfish Profil |
#17 · Zasláno: 20. 4. 2010, 12:05:56 · Upravil/a: nightfish
|
||
lesiak307 Profil |
#18 · Zasláno: 20. 4. 2010, 12:54:42
[#17] nightfish:
Vďaka, to by som asi sám nevyriešil :) |
||
Časová prodleva: 14 let
|
0