Autor Zpráva
lesiak307
Profil
(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
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>&amp;email=<e-mail jsem zadal ve formuláři>)?
lesiak307
Profil
[#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 *
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
[#4] radas:
ale to asi nebude stačiť pre ochranu proti tomu, aby niekoho zaregistrovala tretia osoba
radas
Profil *
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
[#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 *
nevidim v problem, ale neopomijel bych velmi dobrou radu od Joker
lesiak307
Profil
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 *
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 *
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
[#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 *
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
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
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&amp;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
Teraz ešte riešim mail() lebo obdržaný mail má blbé kódovanie.
nightfish
Profil
lesiak307:
obdržaný mail má blbé kódovanie
řešení popsáno ve FAQ
lesiak307
Profil
[#17] nightfish:
Vďaka, to by som asi sám nevyriešil :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0