Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Jäsenrekisterin toteutus

Sivun loppuun

Burton [20.06.2011 14:42:19]

#

Hei!

Millä tavalla kannattaisi toteuttaa pienimuotoisen (alle sata käyttäjää) sivuston jäsenrekisteri? Sivulle olisi tarkoitus pystyä kirjautumaan sisään käyttäjätunnuksella (sähköpostiosoite) ja salasanalla. Mitään muita tietoja ei tarvitse tallentaa, vain ja ainoastaan nämä kaksi. Onko yksinkertainen tekstitiedosto tietoturvan kannalta - tai ihan yleensä - huono vaihtoehto? Pitäisikö harkita ihan oikeaa tietokantajärjestelmää?

Olli [20.06.2011 14:48:48]

#

Pitäisikö eri jäsenille näkyä eri tiedot siis?
Ei taida tietoturvallisesti olla eroa (korjatkaa viisaammat, jos näin on) tekstitiedoston ja tietokannan kanssa, kunhan muistaa että poistaa kuulumattomat merkit kaikista käyttäjän tekemistä syötteistä (esim. strip_tags() ja htmlspecialchars()). Jos et ole aikaisemmin käyttänyt mitään tietokantaa, niin joudut opettelemaan ne alusta asti. Oletko aiemmin työskennellyt php:n kanssa?

Burton [20.06.2011 15:12:23]

#

Kyllä, jäsenille pitäisi näkyä eri tiedot, ja sivuston pitäisi tietää, kuka on kirjautunut. PHP on tullut jo tutuksi, mutta tietokantojen parissa en ole viettänyt kovin paljoa aikaa.

Petja [20.06.2011 15:15:12]

#

Kyllä, tekstitiedosto on huonompi vaihtoehto ja suosittelen käyttämään tietokantaa. Tietokanta on helpompi ja nopeampi tapa päivittää tietoja ja näin saadaan myös tietoturvaa hieman enemmän (tietokannan avulla siis, ei nopeuden ja helppouden avulla). Tietokantaa kannattaisi kuitenkin hyödyntää mahdollisimman hyvin, sillä pelkkä sähköpostiosoite ja salasana ei tee tietokannasta Tietokantaa. Kannattaa esimerkiksi tallentaa edellinen sisäänkirjautumisaika, käyttäjäkohtaisia tietoja: sukupuoli, paikkakunta jne. Mikäli haluat nähdä ketä on online, pitää ainakin tällöin tallentaa edellinen kirjautumisaika.

Mutta mikäli et ole tietokantaa ennen käyttänyt, kannattaisi se opetella nopeasti hopi hopi... ;-)

Teuro [20.06.2011 15:15:36]

#

Tietokantoihin kannattaa varmaan ainakin tutustua, koska tekstitiedostojen kanssa päädyt joko a) huonompaan tai b) korkeintaan yhtä hyvään toteutukseen tietokannan kanssa. Tosin vaikka saisit yhtä hyvän tehtyä tiedostoilla, niin oma projektisi ei ole vielä edistynyt pätkäkään.

Petja kirjoitti:

Tietokanta on helpompi ja nopeampi tapa päivittää tietoja ja näin saadaan myös tietoturvaa hieman enemmän.

Miten nopea päivitys parantaa tietoturvaa?

Petja kirjoitti:

Tietokantaa kannattaisi kuitenkin hyödyntää mahdollisimman hyvin, sillä pelkkä sähköpostiosoite ja salasana ei tee tietokannasta Tietokantaa.

Miksei tee tietokantaa?

Petja [20.06.2011 15:22:03]

#

Kirjoitin kyllä huonosti, mutta tiedät kuitenkin itsekin, että tietokannat ovat 1) nopeampia 2) helpompia 3) turvallisempia.

Tuolla, että pelkkä sähköposti ja salasana ei tee tietokannasta Tietokantaa, tarkoitin sitä, että kannattaa hyödyntää tietokantaa mahd. hyvin. Sillä jos kaikille käyttäjille pitäisi näkyä eri tietoja, en tiedä oikein mitään muutakaan paikkaa kuin tietokannan johon nuo tallentaman.

Ei rueta nyt hiuksia halkomaan.

Teuro [20.06.2011 15:25:24]

#

Petja kirjoitti:

1)nopeampia

Mahdollisesti

Petja kirjoitti:

2) helpompia

Joo epäilemättä

Petja kirjoitti:

3) turvallisempia.

Jos toteutus on huono, ei tietokanta tee siitä yhtään turvallisempaa. Tälläkin keskustelupalstalla on ainakin muutama esimerkki huonosta toteutuksesta aiheutuneesta sivun tuhoutumisesta.

Petja [20.06.2011 15:27:46]

#

Teuro kirjoitti:

Petja kirjoitti:

3) turvallisempia

Jos toteutus on huono, ei tietokanta tee siitä yhtään turvallisempaa. Tälläkin keskustelupalstalla on ainakin muutama esimerkki huonosta toteutuksesta aiheutuneesta sivun tuhoutumisesta.

Ei tietenkään se yhtään se turvallisempi ole kuin tekstitiedostokaan, mikäli toteutusta ei tee hyvin. Lähtökohtana kuitenkin oli, että käyttäjä osaa käyttää tietokantoja.

Metabolix [20.06.2011 15:44:34]

#

Ei tekstitiedostokaan ole sen vaarallisempi kuin tietokanta – ja tässä taas on lähtökohtana, että tekijä osaa käyttää tekstitiedostoja.

Lebe80 [20.06.2011 16:00:44]

#

Osaamattomien käsissä taas voisi veikata, että tietokannan tyhjentyminen aiheuttaa isomman huolen kuin tekstitiedoston. Tekstitiedoston käpistelijät kun yleensä käyttävät useita eri tekstitiedostoja viritelmiinsä, vaikka toisaalta... kyllähän Putkassakin on käynyt keskusteluissa ilmi, että saatetaan siellä tietokanta puolellakin käyttää useampaakin tietokantayhteyttä yhteen projektiin...

Yucca [20.06.2011 16:28:42]

#

Burton kirjoitti:

Millä tavalla kannattaisi toteuttaa pienimuotoisen (alle sata käyttäjää) sivuston jäsenrekisteri? Sivulle olisi tarkoitus pystyä kirjautumaan sisään käyttäjätunnuksella (sähköpostiosoite) ja salasanalla. Mitään muita tietoja ei tarvitse tallentaa, vain ja ainoastaan nämä kaksi. Onko yksinkertainen tekstitiedosto tietoturvan kannalta - tai ihan yleensä - huono vaihtoehto? Pitäisikö harkita ihan oikeaa tietokantajärjestelmää?

Ei kai tässä ole mitenkään olennaista se, ovatko tiedot tekstitiedostossa, tietokannassa vai jossain muussa, vaan se, että tiedot ovat ulkopuolisilta suojattuja ja että salasanoilla on jonkinlaiset vahvuusvaatimukset.

En kyllä ymmärrä, miten kyseessä olisi jäsenrekisteri, jos mitään muuta ei tallenneta kuin sähköpostiosoite ja salasana. Mutta on ihan hyvä ja oikein, että muuta ei tallenneta, jos muuta ei tarvita.

BC1 [20.06.2011 16:58:13]

#

Yksi ääni tietokannalle, koska se on ainakin allekirjoittaneesta käytännöllisempi ja pidempiaikainen ratkaisu tekstitiedostoon verrattuna. Tietokantaa on helpompi lähteä laajentamaan ja muuttamaan sivuston kehittymisen myötä -- eikä vain käyttäjärekisterille vaan itse sivuston tarpeille. Kokemuksesta voin sanoa, että muutokselle/kehitykselle on aina tarvetta.

Mutta toki, tietokantapuolella kannattaa pitää hyvää huolta tietoturvasta - sql injektiot ym. hakkerin kokoiset reiät hyvä pitää tukossa. En ole varma, mutta uskoisin, että tuossakin kokoluokassa tietokanta on notkeampi yhteen tekstitietokantaan verrattuna.

qeijo [20.06.2011 21:03:02]

#

Hei,

Sinuna ylläpitäisin jäsenrerkisterin tietokannassa sen suoraviivaisuuden takia.

Muutama pointti:

A ja O - Tiedon turvallinen lisäys ja hakeminen kannasta. Validoi käyttäjän inputti hyvin ennen kuin ajat sql-kyselyitä.

"Petja kirjoitti:

pelkkä sähköpostiosoite ja salasana ei tee tietokannasta Tietokantaa

:(

S-posti ja salasana riittää vallan mainiosti, mutta muista yksilöidä käyttäjät erilliselllä kasvavalla id:llä ja vaikka status (0/1) kentällä. (esim. jos haluat hetkellisesti poistaa käytöstä henkilön tunnukset, poistamatta niitä kokonaan kannasta.). Lisäksi ehkä privs/koikeudet kenttä voi olla tarpeen kun jakelet oikeuksia sivuston eri osioihin. Salasanat kannattaa salata ainakin md5:lla.

Käyttäjän kirjautumisen jälkeen voit hallita kirjautunutta käyttäjää esim. $_SESSION - muuttujilla.

Petja [21.06.2011 09:22:23]

#

Yucca kirjoitti:

En kyllä ymmärrä, miten kyseessä olisi jäsenrekisteri, jos mitään muuta ei tallenneta kuin sähköpostiosoite ja salasana. Mutta on ihan hyvä ja oikein, että muuta ei tallenneta, jos muuta ei tarvita.

Tätä minä siis tarkoitin. Jottei nyt tullut mitään väärinkäsityksiä.

qeijo [21.06.2011 09:36:56]

#

Yucca kirjoitti:

En kyllä ymmärrä, miten kyseessä olisi jäsenrekisteri, jos mitään muuta ei tallenneta kuin sähköpostiosoite ja salasana.

Petja kirjoitti:

Pelkkä sähköpostiosoite ja salasana ei tee tietokannasta Tietokantaa.

Oli pakko tarttua tähän vielä. <3

Miksi tietokannassa oleva tieto (sähköposti ja salasana) ei tekisi siittä tietokantaa tai jäsenrekisteriä? Onhan esim. tyhjä tietokanta kuitenkin tietokanta samalla tavalla kuin tyhjä tiedosto on tiedosto, kastelukannu ilman vettä on silti...

Vitsivitsi.

Olli [21.06.2011 09:46:08]

#

Jospa riittäisi jo tuosta tietokanta jutusta vääntö... jos keskityttäisi siihen alkuperäiseen kysymykseen eikä yksittäiseen vastaukseen.

Yucca [21.06.2011 11:16:20]

#

qeijo kirjoitti:

Miksi tietokannassa oleva tieto (sähköposti ja salasana) ei tekisi siittä tietokantaa tai jäsenrekisteriä? Onhan esim. tyhjä tietokanta kuitenkin tietokanta samalla tavalla kuin tyhjä tiedosto on tiedosto, kastelukannu ilman vettä on silti...

Sellaiset tiedot eivät tee siitä jäsenrekisteriä, koska siinä ei ole tietoja, joilla jäsenet voidaan yksilöidä. Jos kyse on yhdistyksestä (ja normaalistihan jäsenrekisteri on nimenomaan yhdistyksen jäsenrekisteri), niin yhdistyslaki vaatii, että kustakin jäsenestä tulee olla ötäydellinen nimi ja kotipaikkaö. Käytännössä siihen lähes aina täytyy sisällyttää muutakin tietoa.

Voi tietysti olla, että kysyjä tarkoitti käyttäjätietokantaa. Mutta kuitenkin siis kirjoitti jäsenrekisteristä.

lainaus:

Vitsivitsi.

Huono vitsi ei yleensä parane tuollaisesta. Hyvä voisi huonontua.

qeijo [21.06.2011 12:28:15]

#

Burton kirjoitti:

Hei!
Millä tavalla kannattaisi toteuttaa pienimuotoisen (alle sata käyttäjää) sivuston jäsenrekisteri?

Eiköhän tuosta jo kaikki tajunnu että kyseessä on 'vain' weppisivu, ei mikään virallinen yhdistys joka on sidottu yhdistyslakiin. "Jäsenrekisteri" on tässä tapauksessa yksinkertainen lista eli rekisteri, joka sisältää sivuston käyttäjät eli jäsenet.

Yucca kirjoitti:

Huono vitsi ei yleensä parane tuollaisesta. Hyvä voisi huonontua.

:(

Petja [21.06.2011 12:44:08]

#

Oma mielipiteeni on se mikä on ja pidättäydyn siinä.
On minullakin eräiden sivujen yhteydessä nk. "jäsenrekisteri". Sieltä löytyy vaikka mitä, ei pelkästään sähköpostiosoite ja salasana.

ID               Käyttäjän yksilöllinen numero
Aika 	         Koska rekisteröityi
lastlogin 	 Viimeksi paikalla
userid 	         Nimimerkki
password 	 Salasana hashilla
IMG 	         Käyttäjän kuva
Rooli 	         Esim. ylläpitäjä
email 	         Sähköpostiosoite
name 	         Oikea nimi
sex 	         Sukupuoli
omateksti 	 Pitkä kuvaus itsestä
Status           Lyhyt kuvaus itsestä
DOB 	         Syntymäpäivä

sekä muutamia muita tietoja, esimerkiksi Facebookin yksilöllinen käyttäjä-ID, mikäli käyttäjä rekisteröityi Facebookia käyttäen.

The Alchemist [21.06.2011 12:54:46]

#

Sinun mielipiteesi ei tehnyt mitään järkeä, koska käytit väärää sanaa. Tietokanta on tietokanta välittämättä siitä, mitä tietoja siellä on tai miten ne on järjestetty. Jäsenrekisteri taas ei tarkoita mitään teknistä toteutusta vaan jonkin yhteisön jäsenten tietojen keräämistä yhteen. Ja niin edelleen.

Grez [21.06.2011 13:55:14]

#

Teuro kirjoitti:

Petja kirjoitti:

3) turvallisempia.

Jos toteutus on huono, ei tietokanta tee siitä yhtään turvallisempaa.

Tietoturvassa on kuitenkin useita aspekteja. Hyökkäyskestävyyden osalta sanoisin, että huonosti tehty tietokanta on helposti turvattomampi kuin huonosti tehty tekstitiedosto. Tosin eipä tässä tarvitse kuin käsitellä syötteet, ja ollaan samalla tasolla ja silti työmäärä tietokantaa käyttävään koodiin on luultavasti ollut pienempi.

Sen sijaan jos mietitään tiedon eheyden säilymistä, niin tietokanta on varmasti parempi jos suunnilleen samasta työmäärästä puhutaan. Tämäkin on osa tietoturvaa.

BC1 [26.06.2011 00:10:31]

#

Tietokannasta vielä, että sen turvallisuudeksi tässä tapauksessa - ainakin minusta - riittää mainiosti jonkin käyttäjän jo aiemmin mainitsemä käyttäjän syötteen tarkistaminen. preg_match on hyvä funktio, ja sillä voi estää helposti ainakin SQL-injektion.

// Sallitaan käyttäjänimessä vain aakkoset ja numerot
// jos muita merkkejä löydetään keskeytetään toiminta.

if(preg_match("/^[a-zA-Z0-9]+$/", $username))
  die("Käyttäjänimessä killettyjä merkkejä.");

Mutta kannattaa oikeasti laittaa muutama auttava lisätieto käyttäjärekisteriin - ainakin se käyttäjätunnuksen on/off, jotta häiriköt saa tarvittaessa estettyä hetkellisesti.

Toki voithan käyttää aluksi tekstimuotoista tietokantaa, mikäli se tuntuu helpommalta ratkaisulta juuri nyt ja halutessasi vaihtaa sen myöhemmin tietokannaksi (ei ole ongelma). Mutta kunhan asiat tekee huolellisesti, en näe mitään syytä miksi kumpikaan olisi sen turvallisempi toiseen verrattuna.

Ole vain luova ja käytä niitä työkaluja, jotka tuntuvat hyvälle :) Mitään sellaista "et voi tehdä", mitä ei voisi myöhemmin muuttaa.

Ps. Älkää nyt enää halkoko niitä hiuksia vaan keskittykää kysyjän asiaan.

The Alchemist [26.06.2011 10:33:12]

#

BC1 kirjoitti:

Tietokannasta vielä, että sen turvallisuudeksi tässä tapauksessa - ainakin minusta - riittää mainiosti jonkin käyttäjän jo aiemmin mainitsemä käyttäjän syötteen tarkistaminen. preg_match on hyvä funktio, ja sillä voi estää helposti ainakin SQL-injektion.

// Sallitaan käyttäjänimessä vain aakkoset ja numerot
// jos muita merkkejä löydetään keskeytetään toiminta.

if(preg_match("/^[a-zA-Z0-9]+$/", $username))
  die("Käyttäjänimessä killettyjä merkkejä.");

Ei näin. SQL-kyselyihin käytetään mieluiten PDO:ta tai sitten datan kelvollisuus varmistetaan mysql_real_escape_string():llä. Regexejä käytetään vasta, kun halutaan tarkoituksellisesti pakottaa merkkijonot johonkin formaattiin, esimerkiksi käyttäjätunnuksista ylimääräiset peeloilut pois.


Sivun alkuun

Vastaus

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

Tietoa sivustosta