Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: UniqueID (seurantakoodi)

Sivun loppuun

Ravver [15.02.2007 10:14:47]

#

Kuinkahan kannattaisi toteuttaa tällainen 6 merkin seurantakoodi, joka siis tulisi olla joka kerralla uniikki.

https://www.php.net/manual/fi/function.uniqid.php
Uniqid funktio tekee id:tä joiden pituus on 13 tai 23 merkkiä, joka on siis käyttööni liian pitkä. Jos otan lopusta muutaman merkin pois niin tämän jälkeen samankaltaisia voi siis syntyä.

Varmaan siis pitäisi randomilla ja microtimellä jotain pelleillä? Itselläni oli idea, että ajasta muutetaan tietyt merkit tietyllä tavalla seurantakoodiksi. Koska minun tietääkseni kahta samanlaista päivämäärää & kellonaikaa ei ole olemassa(tottakai) tämä saattaisi toimia? Mutta kuitenkin jos joku keksisi tavan jolla seurantakoodi luotaisiin kellonajasta olisi tämä pienoinen tietoturvariski.

Ajattelin myös, että aina kun homma on hoidettu, seurantakoodi nollattaisiin tietokannasta, koska sille tuskin olisi enää käyttöä.

msdos464 [15.02.2007 10:19:05]

#

md5 microtimestä ja siitä substr? käytössä olevat voisi pitää tietokannasta, josta voisi tarkistaa, että onko tämä jo käytössä..

Ravver [15.02.2007 10:20:36]

#

Tosiaan, ei tullut yhtään mieleen, että senhän voisi tarkistaa onko se jo olemassa =(

Kiitoksia sinulle kun omat aivoni eivät vielä ihan toimi aamusella :/

T.M. [15.02.2007 11:00:04]

#

Minkä takia sen pitää olla juuri 6 merkkiä pitkä? 7 merkkiin saisi täysin uniikin ID:n.

NiLon [15.02.2007 12:50:27]

#

Eikös CRC-hash ole suunnilleen sen 6 merkkiä.

Ravver [15.02.2007 15:29:05]

#

No siis eihän sen täydy olla 6 merkkiä pitkä, mutta 7 merkissä on taas yksi merkki enemmän muistettavaksi =)

T.M. [15.02.2007 16:49:11]

#

Täh, minkä takia käyttäjän pitää se MUISTAA?

Ravver [15.02.2007 18:45:33]

#

Eihän käyttäjän pidä sitä pakosti muistaa, koska seurantakoodi lähetetään myös käyttäjän sähköpostiin. Olisihan se kuitenkin mukava, että sitä ei aina sieltä tarvitsisi lähteä tarkistamaan.

T.M. [15.02.2007 19:18:02]

#

No minkä takia sitten tingit merkeistä, olipa se sitten 64 merkkinen tai 6 merkkinen, ainahan se kopioidaan hiirellä. >__>

Ravver [15.02.2007 19:54:37]

#

Et nyt oikeen ajattele asiaa asiakkaan kannalta. Minullehan se on aika sama onko se 100 vai -10 merkkiä. Enköhän minä järjestelmän suunnittelijana hoida tämän puolen mieluummin käyttäjäystävällisemmäksi kuin koodariystävällisemmäksi =)

NiLon [15.02.2007 22:03:22]

#

Tee juokseva ID, jonka jälkeen baseconvertilla 36 järjestelmään.
0 - 2176782335 asti saat 6 merkkisen tunnisteen :)

Joudut kuitenkin tällä menetelmällä tekemään jotain tuolle ID:lle, ettei jokainen pysty seuraamaan toisen lähetystä.

Wizard [15.02.2007 22:45:35]

#

En tajua? On aina olemassa se riski kellonajan ja päivämäärän kanssa pelatessa jos niistä luodaan luodaan jokin kooditunniste, että verkossa on 2 käyttäjää tai useampi samaan aikaan tekemässä tilauksen. Jos siis ymmärsin idean oikein? Voihan käyttäjiä olla useampi kuin kaksikin jos on vilkas kauppa?

Helpoin tapa: juokseva ID tietokannassa josta sitten vaan kyseinen ID käyttäjälle. Jos on enemmän kuin 999.999 tilausta, niin kaupalla menee hyvin. Ja jokainen ID on käytännössä aina varmasti eri. Miksi miettiä liian vaikeita?


--W--

Ravver [15.02.2007 23:27:04]

#

Tokihan tuo vaikuttaisi helpolta tässä paperilla, mutta eikö se olisi sinustakin tietoturvariski jos tietäisit että seuraavan asiakkaan seurantakoodi on +1 sinun seurantakoodiisi? =)

Opiskelija [16.02.2007 03:44:12]

#

Miksi et vain tee tilauksenhallintasivua johon pääsee omalla tunnuksella ja salasanalla, sieltä sitten näkee tarvittavat tiedot? Paljon luotettavampi kuin seurantakoodi ja helpompa muistaakkin varsinkin jos usein tilailee. Halutessa voit lähettää mailiin seurantakoodin(linkin) jolla pääsee suoraan tilausta seuraamaan, tällöin tietenkin kaikki arkaluontoinen kuten osoitteet jne... piilotettu.

Ja minkä tietoturvariskin aiheuttaa jos näkee muun asiakkaan tilauksenseurannan?

NiLon [16.02.2007 09:12:40]

#

Ei se niinkään tietoturvariskiä, vaan yksityisyyttä loukkaa. Ja kuten juuri sanoinkin, id pitäisi sitten cryptata jotenkin. Toki oman hash-funktion tekeminen on yksi ratkaisu.

Ravver [16.02.2007 09:18:04]

#

Kyseessä ei ole verkkokauppa ja et tietenkään voinut sitä tietää, koska en sitä kertonut(hyi minä). Seurantakoodi siksi, että asiakas saattaa käyttää järjestelmää vain kerran ja silloinkin hieman kiireessä.

Olisin tietysti voinut heti alussa vähän kertoa itse järjestelmästä, mutta ongelmani tosin koski vain tuota seurantakoodia. Ongelma on kuitenkin nyt hoidettu ja kiitos kaikille.

Opiskelija [16.02.2007 14:09:47]

#

Hyvä että ongelma selvisi.

NiLon kirjoitti:

Ei se niinkään tietoturvariskiä, vaan yksityisyyttä loukkaa.

Hmmm.... jos kyseessä olisi ollut nettikauppa niin kenenköhän yksityisyyttä loukkaa jos näkee jonkun tuntemattoman tilauksen?
Kun seurantasivulla ei ole mitään asiakastietoja jotenka ei siitä voi päätellä kenenkä tilaus kyseessä.

NiLon [16.02.2007 14:14:03]

#

No anteeksi ettei krisallipallo paljastanut kaikkea :(
Mutta tuskin asiakas hirveen iloinen on jos jokainen pystyy tarkastelemaan Jelly-sauvansa tilausta.

T.M. [16.02.2007 17:13:48]

#

En vaan tajua miksi käyttäjän pitää edes nähdä se uniikki ID. Saatikka KIRJOITTAA se.
Tai miksi sitä muuttamalla voisi päästä käsiksi jonkun toisen tietoihin.

Jossain nyt mättää pahasti.

Ravver [16.02.2007 17:21:53]

#

Ravver kirjoitti:

Olisin tietysti voinut heti alussa vähän kertoa itse järjestelmästä, mutta ongelmani tosin koski vain tuota seurantakoodia. Ongelma on kuitenkin nyt hoidettu ja kiitos kaikille.

Missään ei mätä tippaakaan. Kukaan ei pääse käsiksi toisen tietoihin. Case solved.

msdos464 [18.02.2007 17:50:55]

#

Wizard kirjoitti:

En tajua? On aina olemassa se riski kellonajan ja päivämäärän kanssa pelatessa jos niistä luodaan luodaan jokin kooditunniste, että verkossa on 2 käyttäjää tai useampi samaan aikaan tekemässä tilauksen. Jos siis ymmärsin idean oikein? Voihan käyttäjiä olla useampi kuin kaksikin jos on vilkas kauppa?

--W--

Tehdään sitten md5(mircrotime().$_SERVER['REMOTE_ADDR']) tms.. tietty proxyt aihetuttaa samoja ip:itä. Tämän takia tarkastetaankin, että onko id käytössä. Pitää jotenkin vissiin tarkistaa, ettei tietokantaan tehdä muita hakuja, jos sinne ollaan lisäämässä dataa..


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta