Kuinkahan kannattaisi toteuttaa tällainen 6 merkin seurantakoodi, joka siis tulisi olla joka kerralla uniikki.
https://www.php.net/manual/fi/function.uniqid.
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öä.
md5 microtimestä ja siitä substr? käytössä olevat voisi pitää tietokannasta, josta voisi tarkistaa, että onko tämä jo käytössä..
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 :/
Minkä takia sen pitää olla juuri 6 merkkiä pitkä? 7 merkkiin saisi täysin uniikin ID:n.
Eikös CRC-hash ole suunnilleen sen 6 merkkiä.
No siis eihän sen täydy olla 6 merkkiä pitkä, mutta 7 merkissä on taas yksi merkki enemmän muistettavaksi =)
Täh, minkä takia käyttäjän pitää se MUISTAA?
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.
No minkä takia sitten tingit merkeistä, olipa se sitten 64 merkkinen tai 6 merkkinen, ainahan se kopioidaan hiirellä. >__>
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 =)
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ä.
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--
Tokihan tuo vaikuttaisi helpolta tässä paperilla, mutta eikö se olisi sinustakin tietoturvariski jos tietäisit että seuraavan asiakkaan seurantakoodi on +1 sinun seurantakoodiisi? =)
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?
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.
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.
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ä.
No anteeksi ettei krisallipallo paljastanut kaikkea :(
Mutta tuskin asiakas hirveen iloinen on jos jokainen pystyy tarkastelemaan Jelly-sauvansa tilausta.
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 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.
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..
Aihe on jo aika vanha, joten et voi enää vastata siihen.