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

1261

    Vastaukset 6

    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. Orpo pelästyi, kun asiat tulivat ilmi ? Hallitus ei enää tuekaan Garden hanketta

      Pääministerinä Orpo on vastuussa hallituksensa päätöksenteosta. Hallitus päätti avokätisestä tuesta hankkeelle, joka ei
      Kansallinen Kokoomus
      369
      1433
    2. Mitähän ajattelet

      Nykyään minusta tai meistä tai tapahtuneista?
      Ikävä
      64
      952
    3. Ei käy sääliksi sitä miestä

      Sitä saa mitä tilaa.
      Ikävä
      116
      905
    4. Mitä kaivattusi

      pelkää? 👻
      Ikävä
      86
      893
    5. Olet kuin minä

      Jännä huomata tämä kerta toisensa jälkeen eikö ❤️
      Ikävä
      66
      870
    6. Hankkikaa elämä

      Tiedetään että hän on mielenkiintoinen mutta rajansa kaikella.
      Ikävä
      94
      701
    7. Sinun silmiisi kun

      Katson niin ymmärrän sen. 👁️👁️👀
      Ikävä
      45
      681
    8. Voisitko mies auttaa..

      Ottaisit yhteyttä vielä kerran, jos haluat? 🤔 Jätäthän ilkeät kommentit pois.
      Ikävä
      50
      609
    9. En ehkä onnistu siinä

      Kovasti minä yritän näyttää kauniilta, vain sinua varten, mutta en taida onnistua siinä.
      Ikävä
      56
      604
    10. Miksi naiset tuoksuvat vaihdevuosien tietyssä vaiheessa todella etäännyttäviltä

      Mietin tätä, onko luojalla ollut jokin tarkoitus näin voimakkaan lemun aikaan tekemiselle. Monet ajattelevat miten joku
      Sinkut
      112
      574
    Aihe