Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Turvallinen kirjautumissysteemi

Sivun loppuun

punppis [06.11.2008 23:22:26]

#

Olen lueskellut vähän jokapuolelta PHP:lla mahdollistettavista turvallisista kirjautumissysteemeistä. Ajattelin kuitenkin kysyä vielä täältä, jos on vaikka jotain jäänyt lukematta tai olen ymmärtäny väärin.

Olisiko tälläisessä järjestelmässä mitään itua?

Kannassa on kolme kenttää:
- tunnus
- salasana (md5=salasana+"salainen suola")
- tunnistautumiskoodi(md5=ip+selain+"salainen suola"+sessionid).

Kun käyttäjä kertaalleen kirjautuu sisään ja sessio alkaa, niin php tekee sessio-id:stä cookien. Lisäksi tehdään cookie tunnuksesta.

Joka kerta kun käyttäjä avaa jonkun sivun niin tarkistetaan selain, ip, tunnus ja sessioid ja verrataan näitä kannassa oleviin.

Mistä muuten tuo sessioid muodostuu? Kannattaako sitä muutella aika-ajoin? Onko tässä jotain aukkoja?

Onko näissä järjestelmissä muuten mitään tietoturvaeroa. Pystyykö siis esim. jotain muuttujaa jotenkin muokkaamaan (ilman register_globalsia tietysti)?

<?php
//eka
if($hash == $hash_kannassa) {
    //kirjautuminen onnistui!
}

//toka
$kirjautunut = false;
if($hash == $hash_kannassa) {
    $kirjautunut = true;
}
if($kirjautunut) {
    //kirjautuminen onnistui! high sensitive data here
}
?>

Edit: Kun käytetään sessioneita, niin tarviiko siihen oikeastaan muuta funktiota, kuin session_start(). Mitä hyötyä on esim. session_write_close-funktiosta?

Edit2: Kannattaako sessioneita oikeestaan edes käyttää, jos on pelkkä sisäänkirjautuminen. Laittaa tuon sessionid:n tilalle vaikka uniqid:n, niin ei tarvitse palvimelle edes mitään tiedostoja tallentaa ja tietoturva nousee entisestään.

Grez [06.11.2008 23:30:49]

#

Tuo että salasana olisi tietokannassa MD5:na ilman suolaa ei kuulosta kovin fiksulta idealta, melkein yhtä hyvin voisit tallentaa sen selväkielisenä.

Selaimen tarkastamisesta ei nähdäkseni ole mitään käytännön hyötyä, koska jos mustahattu pystyy selvittämään käyttäjän istunnon muut tiedot, niin se selainkin kyllä varmasti selviää ja on helposti spooffattavissa.

punppis [06.11.2008 23:33:58]

#

Grez kirjoitti:

Tuo että salasana olisi tietokannassa MD5:na ilman suolaa ei kuulosta kovin fiksulta idealta, melkein yhtä hyvin voisit tallentaa sen selväkielisenä.

Korjattu.

Grez kirjoitti:

Selaimen tarkastamisesta ei nähdäkseni ole mitään käytännön hyötyä, koska jos mustahattu pystyy selvittämään käyttäjän istunnon muut tiedot, niin se selainkin kyllä varmasti selviää ja on helposti spooffattavissa.

Eikös se silti tuo vähän lisää tietoturvaa, jos sinne hashiin laittaa enemmän tietoa?

Lebe80 [06.11.2008 23:37:33]

#

Kaapataan aihe aihetta sivuten.
Mitäs mieltä olette melko yleisesti käytetystä "hash:suola" tyylisestä salasanan tallennuksesta, eli tietokantaa tallentaan salasanakenttään suolattuhash + suola?

Eli suola on "julkinen" (nähtävissä vain kannassa), mutta tietenkin satunnainen merkkijono ja jokaisella käyttäjällä oma (vaihtuu esim. salasanaa vaihdettaessa).

Ja olisiko hyvä vaihtaa tuota suolaa esim. jokaisen onnistuneen kirjautumisen yhteydessä, vai mieluummin vain kun salasanaakin vaihdetaan?

Grez [06.11.2008 23:52:05]

#

En kyllä keksi mitään hyötyä suolan vaihtamisesta jos salasanaa ei vaihdeta. Teoriassa siitä voisi olla jopa haittaa.

Merri [07.11.2008 14:34:19]

#

Yksi juttu joka monissa "itsetehdyissä" kirjaantumissysteemeissä ärsyttää on se, että kun kirjautuu sisään toiselta koneelta (tai toisesta selaimesta), niin se kirjaa ulos ensimmäiseltä koneelta, vaikka pitäisi olla käytössä pysyvä kirjautuminen ensimmäisellä koneella.

Haluaisinkin tässä vaihteeksi nostaa esiin, että kirjautumisen tietoturvan lisäksi kannattaisi samalla miettiä sen käytettävyyttä. Toki se pitää heijastaa myös projektin muuhun luonteeseen. Minä kuitenkin suosin jatkuvaa kirjautuneena pysymistä varsin monessa paikassa, olkootkin että joku voisi vain istahtaa koneelle ja esiintyä minuna. Riski on kuitenkin lähes olematon omalla kohdallani: kissa ei osaa käyttää hiirtä.

Grez [07.11.2008 15:17:32]

#

En muuten muista tähän hätään yhtään www-systeemiä mihin en voisi kirjautua samanaikaisesti kahdelta koneelta.. En ole tosin esimerkiksi verkkopankkiin kokeillut moista.

Mielestäni tässä tapauksessa tunnistautumiskoodia ei ole tarvetta pitää kannassa ja näin ollen myöskin useampi yhtäaikainen sessio olisi mahdollinen.

Vasta_alkaja [14.11.2008 10:29:44]

#

Miten tuommoinen suola systeemi olisi järkevä toteuttaa.


Sivun alkuun

Vastaus

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

Tietoa sivustosta