Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kirjautuvat eri tunnuksilla

mika132 [27.10.2011 13:17:31]

#

Deffi kirjoitti:

Lähempi tarkastelu osoittaa, että varsinaiselle sivulle pääsee asettamalla kekseihin muuttuja ID=1, ID=6 tai ID=8. Ja mikä hauskinta, tällöin sivusto luulee että olet kirjautunut ID:n osoittamana käyttäjänä. Esimerkiksi chromessa kirjoittamalla osoiteriville javascript:void(document.cookie="ID=1"); ja surffaamalla osoitteeseen tehogames.com kirjaudut Matti-ylläpitäjätunnuksella sivulle. Että semmosta tietoturvaa sitten..

Mutta hei, onnea projektiin. Glory & Pride näyttää tosi hauskalta :)

Tuo tuli minulle tuolla projektit alueella.. Miten ihmeessä tuon pystyy estämään ettei kukaan voi kirjoittaa itselleen keksiksi jotain ID:tä? Mitä suojausta siihen voi käyttää?

MD5 hashauskin on joka tarkistaa ollaanko sitä kirjauduttu.. Käytänkö sitä sitten väärin?

<?php
	if (isset($_SESSION['hash'])) {
        $hash = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
        $hash .= 'salINEn_Su0lA';
        $hash .= $_SERVER['REMOTE_ADDR'];
        $hash = md5($hash);

        if ($_SESSION['hash'] != $hash)
        {
           header("location: ?q=logout");
        }
	} else {
			$hash = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
			$hash .= 'salINEn_Su0lA';
			$hash .= $_SERVER['REMOTE_ADDR'];
			$_SESSION['hash'] = md5($hash);
	}
?>

Grez [27.10.2011 14:04:39]

#

mika132 kirjoitti:

Käytänkö sitä sitten väärin?

Käytät sitä väärin.

Käytät tuossa jo $_SESSIONia, joten oikea tapa olisi laittaa $_SESSION['id'] = 1; eikä pelata evästeiden kanssa.

Jos nyt kuitenkin haluat viritellä tiivisteillä, niin tuosta säädöstäsihän ei ole mitään hyötyä ID:n vaihtamisen kannalta, koska tiiviste ei ole millään tavalla riippuvainen siitä ID-numerosta ja muutenkin tuo $_SESSIONin sisältämä data on omalla palvelimellasi. Eli jos haluaisit (turhaan) parantaa tietoturvaa niin laittaisit tuon tiivisteen evästeeseen ja sitten vertailisit sitä sessiossa oleviin tietoihin.

mika132 [27.10.2011 14:32:02]

#

Miten turvallinen nykyinen systeemini mahtaa olla? Teen rekisteröityessä random lukuarvon ja suolaan sen jonka jälkeen siirrän sen tietokantaan sarakkeeseen Tietoturva. Sitten kirjautuessa asetetaan tuo tieto sieltä tietokannasta istuntoon "hash" ja tarkistetaan onko istunto hash sama kuin kirjautumis ID:n löytämä hash.. jos ei tuhotaan kaikki istunnot ja evästeet joka tarkoittaa uloskirjausta.

Oli ehkä hieman monimutkaisesti selitetty, mutta toivottavasti ymmärsit. :D

Grez [27.10.2011 14:39:20]

#

Miksi se ID ylipäätään pitää pistää evästeeseen?

Jos haluat jotain järkevää kommenttia tietoturvasta, niin pistä koko koodi näkyville.

mika132 [27.10.2011 14:41:11]

#

Evästeeseen siksi että käyttäjä pysyy kirjautuneena ettei tarvitse aina kirjautua uudestaan. Mikä koodi jos saan kysyä? Kirjautumis?

Grez [27.10.2011 14:55:33]

#

Niin, miksi laitat sen ID:n sinne evästeeseen, etkä sessioon kun kerran joka tapauksessa käytät sessioita?

Jos taas haluat sisäänkirjautumisen säilyvän istunnon jälkeenkin, niin itse generoisin jonkin satunnaisen merkkijonon kantaan ja laittaisen sen evästeeseen. Ko. satunnaismerkkijonon perusteella sitten voisi hakea käyttäjän, eikä ID:tä edelleenkään tarvitsisi laittaa evästeeseen.

Vastaus

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

Tietoa sivustosta