Sessionin turvallisuus

lintuherra

1) Onko turvallista jos sisäänkirjautuminen tarkistetaan aina sivun lautauksen yhteydessä vain katsomalla onko esimerkiksi $_SESSION['kirjauduttu'] olemassa? (tuo sessioni siis luodaan kun syötetään oikea käyttäjä ja salasana, jotka löytyvät mysql-tietokannasta)

2) Onko tuossa 1)-kohdassa eroa onko $_SESSION['kirjauduttu'] vai $_SESSION['$ip'] ja sitä verrataan käyttäjän ip:hen? ($ip haettaisiin ja tarkistus tehtäisii joka sivun latauksen yhteydessä)

3) Vai olisiko parempi jos aina kun sivu ladataan uudestaan katsottaisiin onko $_SESSION['nimi'] ja $_SESSION['salasana'] mysql-tietokannassa? Hidastaisiko se turhaan vai olisiko paljon turvallisempi?

6

923

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Lauri.

      >> 1) Onko turvallista jos sisäänkirjautuminen tarkistetaan aina sivun lautauksen yhteydessä vain katsomalla onko esimerkiksi $_SESSION['kirjauduttu'] olemassa?
      Ei ole. Joku on saattanut kaapata istunnon (ei mikään kovin vaikea tehtävä). Sinun on myös varmistettava, että istunto edelleen kuuluu sen alkuperäiselle omistajalle. Googlettele lisää.

      >> 2) Onko tuossa 1)-kohdassa eroa
      Kyllä on. Usea ihminen saattaa käyttää Internettiä saman IP:n takaa, esimerkiksi taloyhtiöt ja kirjastot. Lisäksi IP saattaa vaihdella joissain todella harvoissa tapauksissa eri sivulatausten kesken, esimerkiksi jotkut matkaviestimistä käytetyt yhteydet (mutta tosi harvinaista)

      >> 3) Vai olisiko parempi jos aina kun sivu ladataan [...]
      No hidastaahan se. Aina se tietokantakysely näkyy, ja toisekseen kun tuo salasana on kerran annettu (onnistuneesti aloitettu istunto), niin kyllä se sieltä tietokannasta löytyy jatkossakin. Näen tuon aika turhana.

      • lintuherra

        Mikäs sitten on suositeltu tapa käyttää sessioneita turvalliesti?

        Ja tuli toinen turvallisuuteen littyvä asia mieleen.
        Sivustoa luetaan index.php:n kautta includettamalla siihen erillaisia tiedostoja, esim. uutiset.php, kayttajat.php. Jos kuitenkin haluan, että uutiset.php:tä ei voi lukea muuta kuin index.php:n kautta niin onko tämmöinen esimkerkiksi toimiva tapa:

        index.php:
        sisältää ennen includettamista pätkän "$turvallisuus = 1;"

        uutiset.php
        sisältää aivan alussa pätkän
        if (!$turvallisuus) exit;


      • Lauri.
        lintuherra kirjoitti:

        Mikäs sitten on suositeltu tapa käyttää sessioneita turvalliesti?

        Ja tuli toinen turvallisuuteen littyvä asia mieleen.
        Sivustoa luetaan index.php:n kautta includettamalla siihen erillaisia tiedostoja, esim. uutiset.php, kayttajat.php. Jos kuitenkin haluan, että uutiset.php:tä ei voi lukea muuta kuin index.php:n kautta niin onko tämmöinen esimkerkiksi toimiva tapa:

        index.php:
        sisältää ennen includettamista pätkän "$turvallisuus = 1;"

        uutiset.php
        sisältää aivan alussa pätkän
        if (!$turvallisuus) exit;

        >> Mikäs sitten on suositeltu tapa käyttää sessioneita turvalliesti?
        Tallenna sessioniin joitain tietoja käyttäjästä, jotka ovat riittävän yksilöllisiä ja eivät vaihdu kyselyjen aikana. Osa näistä tiedoista on saatavilla SERVER muuttujan takaa: http://fi2.php.net/manual/en/reserved.variables.server.php

        Sitten niiden pohjalta vertailet, ovatko tiedot vaihtuneet vai eivät. Hyviä arvoja ovat mm. IP ja selain (user agent).

        >> niin onko tämmöinen esimkerkiksi toimiva tapa:
        Juurikin tuollainen on oikea tapa. Jotkut tosin määrittelevät definellä ( http://fi2.php.net/manual/en/function.define.php ) tuon arvon, ja tarkastavat onko se haluttu, tyyliin
        define("turvallisuus", 1); ja jokaiseen tiedotoon if(!defined("turvallisuus")) die();

        Tämä siitä syystä, että jos palvelin on asetettu käyttämään superglobaaleja arvoja, niin tuosta sinun esimerkistäsi pääsisi läpi menemällä osoitteeseen uutiset.php?turvallisuus=1. Mutta PHP 5 eteenpäin tuo asetus on ollut poissa päältä (oletuksena), ja tuskin toimii nyttenkään. Mutta tuo define on siis hieman "turvallisempi", koska ei ole haavoittuvainen palvelimen asetuksista.


      • lintuherra
        Lauri. kirjoitti:

        >> Mikäs sitten on suositeltu tapa käyttää sessioneita turvalliesti?
        Tallenna sessioniin joitain tietoja käyttäjästä, jotka ovat riittävän yksilöllisiä ja eivät vaihdu kyselyjen aikana. Osa näistä tiedoista on saatavilla SERVER muuttujan takaa: http://fi2.php.net/manual/en/reserved.variables.server.php

        Sitten niiden pohjalta vertailet, ovatko tiedot vaihtuneet vai eivät. Hyviä arvoja ovat mm. IP ja selain (user agent).

        >> niin onko tämmöinen esimkerkiksi toimiva tapa:
        Juurikin tuollainen on oikea tapa. Jotkut tosin määrittelevät definellä ( http://fi2.php.net/manual/en/function.define.php ) tuon arvon, ja tarkastavat onko se haluttu, tyyliin
        define("turvallisuus", 1); ja jokaiseen tiedotoon if(!defined("turvallisuus")) die();

        Tämä siitä syystä, että jos palvelin on asetettu käyttämään superglobaaleja arvoja, niin tuosta sinun esimerkistäsi pääsisi läpi menemällä osoitteeseen uutiset.php?turvallisuus=1. Mutta PHP 5 eteenpäin tuo asetus on ollut poissa päältä (oletuksena), ja tuskin toimii nyttenkään. Mutta tuo define on siis hieman "turvallisempi", koska ei ole haavoittuvainen palvelimen asetuksista.

        Kiitos paljon edellisistä, ovat olleet suuresti avuksi. :)

        Mutta vielä pieniä tarkennuksia.
        Eli tarkoitit, että esimerkiksi sisäänkirjauduttaessa luodaan aina $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];. Ja joka lautauksella katsotaan esim.
        if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']) exit;
        Onko turvallisempaa jos $_SESSION['ip']:n tilalle laitetaan esim. $_SESSION['$_SERVER['REMOTE_PORT']'] jolloin sessionin nimi vaihtuu joka kerta?

        Onko myöskään väliä, että onko sessioneita tehty useita? Esim. onko $_SESSION['ip'] ja $_SESSION['selain'] turvallisempaa tarkastaa erikseen kuin luoda yksi $_SESSION['ipselain']?


    • Anonyymi

      Session avoin lapset, heidän 30 m alue videot, tehdään ystävällisin mieleistä? On syytä muistaa syytelyt Otti poliisin syliin kontaktiin tietokoneella.
      Muiden lapset kotiin , tämä on syytä pitää mielessä, touhut syytely naapurit yhteistyö

      • Anonyymi

        Koulut alkaneet näemmä, kun tulee aivovamma-tekstejä.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Sanna Marin kysyi hämmästyneenä: Onko Suomessa jäänmurtajia?

      Nettilehden toimittaja kysyi Sanna Marinilta suoraan, että sovittiinko nuo jäänmurtajien kaupat jo 2019, jolloin Marin k
      Maailman menoa
      71
      3879
    2. Voiko normaali ihminen ryhtyä vasemmistolaiseksi?

      Tätä jäin pohdiskelemaan.
      Maailman menoa
      101
      3495
    3. SDP haluaa 40 000 nettomaahanmuuttajaa

      SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah
      Maailman menoa
      78
      3328
    4. Mikä tuota vasemmistolaisista jankkaavaa vaivaa?

      Pahasti on ihon alle, siis korvien väliin, päässeet kummittelemaan. Ei ole terveen ihmisen merkki jankata yhdestä asia
      Maailman menoa
      36
      2638
    5. Mitä ajattelit kun näit

      kaivattusi ensimmäisen kerran? xd
      Ikävä
      122
      1580
    6. Nyt meni lopulliset lämmöt.

      Alan käyttäytymään yhtä kylmästi miehiä kohtaan kuin mua kohtaan on käyttäydytty ja vain käytetty viimeiset pari vuotta
      Sinkut
      36
      1506
    7. Meitä ei tule

      Koska periaatteemme ovat rakkautta vahvempia. Tämä on siis koettelemus, jonka tarkoitus on vahvistaa meitä yksilöinä 😌
      Ikävä
      22
      1114
    8. Onko erityinen paikka jossa haluaisit nyt olla

      Onko joku spesiaali lempipaikka missä mieluiten olisit?
      Ikävä
      42
      1100
    9. Sulla on avaimet ja keinot

      Jos haluat jatkaa tutustumista. Itse olen niin jäässä etten pysty tekemään enää mitään. Pidempi keppi johon on helpompi
      Ikävä
      18
      1076
    10. Itseään kannattaa tarkastella realistisesti ja

      miettiä mihin ne rahkeet oikeesti riittää. Tyhmempikin ymmärtää että varakas ylemmän tason mies ei kelpuuta sellaista ku
      Ikävä
      118
      1016
    Aihe