Autor | Zpráva | ||
---|---|---|---|
Marek Šneberger Profil * |
#1 · Zasláno: 20. 1. 2012, 13:51:57
Ahoj,
Mám aplikaci, která komunikuje přes GET s klienty. Adresa je example.com/tajnystring + GET parametry. V databazi porovnám tajnystring, a pokud je nalezen, vím o kterého uživatele se jedná. Pokud ale někdo (ať už záměrně nebo z neznalosti) někomu dá onen "tajnystring", dotyčný se bude ukazovat jako první uživatel. Jak tomu zabránit? Napadlo mě, že bych mohl vytvořit tabulku tajnestringy se sloupcema id, tajnystring, ip, users_id (cizí klíč do users), atd... A onen "tajnystring" bych generoval z řádků z databáze. Něco na způsob $secret = sha1($row). Klient by mi poslal přes GET tento $secret, já bych ho rozbalil, a porovnal bych "tajnystring", ip adresu, a ID uživatele jestli sedí. Jak to ale provést? Je nějaká funkce na "zabalení a rozbalení? Snad jsem to napsal trošku srozumitelně, za každou odpověď děkuji, Marek |
||
nemeja Profil |
#2 · Zasláno: 20. 1. 2012, 13:55:33
Proč je to tajnej string, když ho máš v url adrese ( metoda GET ), používej session nebo cookies
|
||
Marek Šneberger Profil * |
#3 · Zasláno: 20. 1. 2012, 14:49:05
nemeja:
V adrese ho mám, ale tu adresu má každej uživatel jinou. Momentálně pro tajnej string používám <?php md5(uniqid(rand(),true)); ?> Cookies používat nemůžu, protože klient není prohlížeč ale aplikace, která se serverem komunikuje přes GET. Jak bych to pak mohl porovnávat? Jde o to, že uživatel přijde na webovku, zkopíruje si adresu s tím tajným stringem, vloží do programu a frčí. Pokud jí ale někomu dá, je problém. Myslel jsem , že na to existuje nějaká funkce nebo tak :/ |
||
Amunak Profil |
#4 · Zasláno: 21. 1. 2012, 12:44:32
Marek Šneberger:
Myslím že tohle moc "rozumně" řešit nejde. Pokud to chápu dobře, jde vlastně o jakýsi API klíč. Musíš tam prostě napsat, ať onu adresu (nebo alespoň ten tajný řetězec) nikomu nedávají, a dát taky možnost vygenerovat nový. Můžeš pak třeba taky logovat IP adresy, a když se objeví nová, uživatele o tom upozornit, a pokud si přeje, vygenerovat mu klíč nový. V opačném případě bys musel tu aplikaci napsat nějak jinak, aby se třeba uživatel musel vždy nejprve přihlásit a od serveru by po každém přihlášení dostal jiný klíč (který by navíc program přijal automaticky, takže by o něm uživatel ani nevěděl). |
||
Marek Šneberger Profil * |
#5 · Zasláno: 21. 1. 2012, 13:06:04
Amunak:
„by po každém přihlášení dostal jiný klíč“ To by taky šlo, díky. Nebo mě napadlo udělat to trošku jinak, např. V tabulce users mám onen tajný klíč, ip adresu a ID uživatele. To bych dal do pole, např. <?php $array = array( 'ip' => '127.0.0.1', 'users_id' => 3, 'secretKey' => 'bflmpsvz' ); ?> <?php $sha1 = sha1($array); ?> Udělal bych si novou tabulku 'secrets', kde by bylo ID, secretKey, IP, users_id (cizí klíč do users), sha1 Pak by mi z klienta poslal $sha1 (plus v $_GET ip adresu a pár dalších věcí), $sha1 bych porovnal v tabulce 'secrets', pokud by se našel, porovnal bych IP adresy, pak secretKey a pokud by to prošlo, věděl bych o koho se jedná. Šlo by to tak? |
||
Časová prodleva: 12 let
|
0