Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Htaccess käyttäjätunnistus dynaamisella IP:llä

Sivun loppuun

Petja [04.02.2011 20:42:23]

#

Onko mahdollista tunnistaa käyttäjä htaccesilla, ilman salasanojen ja käyttäjätunnusten antamista. Tiedän että on, mutta miten tämä tapahtuu dynaamisten IP-osoitteiden kanssa?

Tietoturvariskihän se olisi, jos tunnistettaisiin IP:n perusteella (kun dynaamisesta IP:stä on kyse). Voiko siis työaseman tunnistaa jotenkin muuten?

Grez [04.02.2011 20:50:19]

#

Ööh, käyttäjän tunnistaminen ilman käyttäjätunnusta tai salasanaa..

No, jonkinlainen security token esimerkiksi evästeessä tai esim. SSL Client certificate.

Petja [04.02.2011 20:54:07]

#

Itsekin mietin tuota evästeessä jonkunlaisen md5:n säilytystä. Tosin jos koneellani olisi jokin toinen käyttäjä, voisi hän selata evästeitä ja kirjoittaa ylös koodin ja lisätä omalle koneelleen, jolloin pääsisi selaamaan salattuja tiedostoja.

En rupea maksamaan sataa euroa SSL-varmenteen hankkimisesta. :)

Grez [04.02.2011 20:57:49]

#

Miksi sen pitäisi olla md5? Ja miksi SSL-varmenteen pitäisi maksaa 100 euroa?

Petja [04.02.2011 20:59:20]

#

Voi se yhtä hyvin olla vaikka sha1, mutta silti joku voisi kopioida sen ja lisätä omalle koneelleen.

SSL-varmenne maksaa 100 euroa vuodessa, ellen aivan erehdy. :/

Metabolix [04.02.2011 21:00:51]

#

SSL-varmenteita saa generoitua ihan ilmaiseksi omalla koneella. Rahaa pitää maksaa siitä, että joku luotettava taho allekirjoittaa sen, jotta kuka tahansa voi todeta, että varmenne on aito. Tässähän oli kuitenkin puhe nimenomaan asiakkaan varmenteesta, joten aitouden todisteeksi riittää, että avaimen toinen puolisko on tallennettu omalle palvelimellesi.

Minkä tahansa tunnistusvälineen voi varastaa, ellei sitä ole salasanalla suojattu. Myös SSL-varmenteen voi varastaa, tai sitten käyttäjä joutuu suojaamaan sen salasanalla, jolloin tilanne ei ole varsinaisesti muuttunut miksikään, koska käyttäjä joutuu yhä syöttämään salasanan kirjautuakseen.

Jos ajattelit saada tästä jonkin peruskäyttäjälle käsitettävän järjestelmän, SSL-varmenne HTTP:ssä on minun nähdäkseni sieltä vaikeimmasta päästä. Minulla ei ainakaan ole suoraan käsitystä, miten selaimeen asennettaisiin asiakkaan varmenne.

(Edit: muokkailtu kovasti.)

Petja [04.02.2011 21:05:20]

#

Metabolix, tipahdin nyt tuossa neljännellä rivillä kärryiltä. Eli siis...

(Edit 1: Eli siis tähän ei ole mitään ratkaisua?)
(Edit 2: Toisaalta voisi jokaisen kirjautumisen jälkeen generoida uuden hashin ja tallentaa kekseihin.)

Grez [04.02.2011 21:33:19]

#

Petja kirjoitti:

Voi se yhtä hyvin olla vaikka sha1, mutta silti joku voisi kopioida sen ja lisätä omalle koneelleen.

Niin, siis kysymykseni ei olennaisesti ollut, että miksi juuri md5-hash, vaan miksi hash ylipäätään.

Eli jos teet käyttäjälle tunnisteen, jolla se jatkossa tunnistetaan, niin mitä hyötyä saavutat sillä, että käytät jotain tiivistealgoritmia verrattuna ihan vaan satunnaismerkkijonoon? Jos teet tiivisteen jostain käyttäjän tiedoista, niin tämähän on tietoturvan kannalta huonompi kuin satunnaismerkkijono. Jos taas lasket tiivisteen satunnaismerkkijonosta, niin et saavuta mitään hyötyä, korkeintaan vähennät satunnaisuutta.

Jos nyt vielä syvemmälle menen tähän pointtiini, niin minusta oikea tapa suunnitella järjestelmiä ei ole lykätä vaan siihen kaikkea mahdollista mikä kuulostaa hienolta ilman, että niiden "hienojen" juttujen käyttäminen on oikeasti perusteltua. Eli jos jokainen suunnitteluvalinta on perusteltavissa, niin järjestelmästä tulee parempi ja helpompi ylläpitää sekä sisältää vähemmän WTF:iä. Lisäksi KISS on hyvä periaate.

Petja [04.02.2011 21:38:49]

#

Niinhän se taitaa olla (ei ymmärtänyt kaikkea).

Nyt kun aloitin tämän htaccessia koskevan threadin, kysynpä sitten tästä mod_rewritestä. Olen ymmärtänyt sen idean muuten ihan hyvin, mutta olisin toteuttamassa tiedostolataamispalvelua, joka on ongelma sinänsä, ettei tuo tunnu ymmärtävän tiedostomuodon ja -nimen välissä olevaa pistettä (.).

Käyttäjä syöttää osoiteriville:
...../zippi.zip

Todellisuudessa:
...../index.php?file=zippi&ext=zip

Miten laitan toimimaan?

Metabolix [04.02.2011 21:42:15]

#

Piste tarkoittaa säännöllisessä lausekkeessa mitä tahansa merkkiä, joten sinun pitää laittaa \. tai [.], jos haluat nimenomaan pistemerkin.

Teknkik [04.02.2011 21:44:05]

#

Petja: Jos syöttäisit ?file=zippi.zip, eli ilman pätkäisemistä, voisit helposti vaikka explodella parsia tuosta $_GET['file'] haun arvosta tiedostopäätteen, vaikkapa

<?php
$tiedosto = explode(".", $_GET['file']);
#Tulostetaan tiedostopääte
echo end($tiedosto);
?>

Enpäs nyt tiedä toimiiko tuo suoraan, mutta idea pitäisi näkyä :-)

Petja [04.02.2011 21:48:58]

#

Metabolix kirjoitti:

Piste tarkoittaa säännöllisessä lausekkeessa mitä tahansa merkkiä, joten sinun pitää laittaa \. tai [.], jos haluat nimenomaan pistemerkin.

Antaisitko tämän vielä kokonaisuudessaan?
Tämä ei toimi:

RewriteRule ^([^/\.]+)/?$[.]([^/\.]+) index.php?file=$1 [L]

Hennkka [04.02.2011 21:53:13]

#

$ tarkoittaa rivin (URL:än) lopetusta, joten sen pitää olla lopussa.

Petja [04.02.2011 21:57:25]

#

Ei toimi.
Näin ollessa:

RewriteRule ^([^/\.]+)/?[.]([^/\.]+)$ index.php?file=$1 [L]

Sivulle ilmestyy:
index

tai

Näin ollessa:

RewriteRule ^([^/\.]+)/?[.]([^/\.]+) index.php?file=$1$ [L]

Sivulle ilmestyy:
index$

Annatkos tuon aivan oikean muodon suoraan minulle, kiitos!

Metabolix [04.02.2011 22:03:25]

#

Lausekkeesi on ihan outo: miksi / ja miksi hakasuluissa \.? Entä tiedostot, joiden nimessä on monta pistettä, kuten nyt tyypillisen Windows-käyttäjän luoma "valokuva 1.2.2011.jpg"? (Entä päätteettömät tiedostot?)

Toinen ongelma on, että nyt palvelin ohjaa osoitteesta juttu.zip ensin sivulle index.php?file=juttu (eli periaatteessa ihan oikein, koska et ole tiedostopäätettä edes käsitellyt) ja tästä edelleen sivulle index.php?file=index, koska myös uusi osoite ajetaan korvauksen läpi.

En käytä Apachea, mutta kokeile näin:

RewriteRule  ^file/([^/]+)[.]([^/]+)$  index.php?file=$1&ext=$2

Nyt osoitteen file/a.b.c.d pitäisi muuttua osoitteeksi index.php?file=a.b.c&ext=d.

Petja [04.02.2011 22:07:03]

#

Kiitos, toimii.

(Edit: Saisiko tuon file/ pois siten, että muoto on osoite.fi/zippi.zip. Jos poistaa file/ sivua ei löydy ja jos jättää siihen vain / käy samoin.)

Metabolix [04.02.2011 22:56:04]

#

Selitin juuri, miksei sitä voi vain suoraan poistaa (tai siis miksi ohjaus ei suoraan toimi ilman sitä). Oliko selityksessä jokin epäselvyys, vai etkö vain ymmärtänyt, että selitys koskee ihan yhtä lailla minun versiotani kuin sinunkin?

Voit korjata asian lisäämällä juuri ennen RewriteRule-riviä jonkin sopivan ehdon. Esimerkiksi seuraavalla ehdolla saat ohjauksen tapahtumaan vain, jos pyydettyä tiedostoa ei ole olemassa:

RewriteCond %{REQUEST_FILENAME} !-f

Minusta olisi kuitenkin käytännöllisempää pitää tiedostot näennäisesti omassa hakemistossaan. Tuolla haluamallasi ratkaisutavalla et voi luoda päähakemistoon uusia tiedostoja, koska ne kaikki ohjautuvat index.php:hen.

punppis [05.02.2011 19:28:13]

#

Kristallipalloni kertoo, että tarkastat tiedostoformaatin pelkän tiedostopäätteen perusteella. Ei hyvä.

Petja [06.02.2011 17:46:52]

#

Syystä että?

Metabolix [06.02.2011 18:26:21]

#

Tiedostopääte ei kerro mitään tiedoston todellisesta sisällöstä. Ainoa luotettava tapa tunnistaa tiedoston tyyppi on tarkistaa sen sisältö jotenkin. Toisaalta jos olet itse huolehtinut jo tallennusvaiheessa, että .zip on todella .zip, ei pitäisi olla mitään hätää.


Sivun alkuun

Vastaus

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

Tietoa sivustosta