Netistä ei ole löytynyt tarpeisiini sopivaa php -salasanasuojausta. htaccessia en halua käyttää.
Eli jos joltain löytyis ihan simppeli salasanasuojaus koodinpätkä, niin kertoisi mistä löytyis tai kehittelis sellaisen tähän.
Eli kun oikean tunnuksen ja salasanan on syöttänyt pääsee etusivulle. alasivujen ei välttämättä tarvi olla suojattu.
Tunnuksia ja salasanoja ei tarvitse olla yhtä enempää.
md5-hashi on aina kaveri tuommoisissa <3. Ihan oikea opaskin aiheestä löytyy: https://www.ohjelmointiputka.net/oppaat/opas.
Jantse kirjoitti:
htaccessia en halua käyttää.
Mikäs siinä .htaccess on vikana?
Haluan persoonallisen loggautumisen joten htaccess ei hyvä.
no tee jotenkin näin vaikka
<? session_start() //luodaan sessio //jos ollaan kirjauduttu sisään if($_SESSION['login'] == true){ //jos halutaan loggautua ulos if($_GET['action'] == "logout"){ session_destroy(); //tuhotaan sessio echo "Olet kirjautunut ulos"; //tulostetaan teksi //jos ei } else { echo "Tervetuloa admin alueelle ;)"; //tulostetaan teksti } //jos ei olla kirjauduttu sisään } else { //jos yritetään kirjautua sisään if(isset($_POST['nimi']) && isset($_POST['salasana'])){ //jos tunnus ja salasana on oikein if($_POST['nimi'] == "admin" && $_POST['salasana'] == "salasana"){ $_SESSION['login'] = true; //asetetaan login arvo trueksi header("location: taasivu.php"); //ohjataa käyttäjä sivulle uudestaa //jos salasana/käyttäjätunnus on väärä } else { echo "Väärä salasana/käyttäjätunnus"; //tulostetaan virhe teksi } //jos ei yritetän kirjautua sisään } else { //tulostetaan kirjautumis lomake echo "<form method=post> nimi: <input type=text name=nimi><br> salasana: <input type=password name=salasana><br> <input type=submit value=login> </form>"; } } ?>
Mazuli: Jantse halusi salasanasuojausta, tuohan on yksi iso reikä koko koodi :) niin ja kannattaa muuten vähän miettiä mitä kommentoi, jokaista tekstinulostusta ja aaltosuljetta ei välttämättä tarvi selittää vaikeampaa kautta, jokainen tajuaa niiden merkityksen ;)
Jantse tutustu tosiaan tuohon MD5:een, kuten Puhveli neuvoi. Ja muuten voit vaikka soveltaa tuota Mazulin esimerkkiä, kunhan laitat tuon salasanan menemään md5-summaajan läpi niin ihan ok on, ja poista kommentit että saat jotain selvää :)
no joo toi nyt oli nopeesti väsätty esimerkkiä antava esimerkki ;)
MD5-hash on lellikki-salasanasuojaus. Moisen saisi auki sekunneissa.
Jtm kirjoitti:
MD5-hash on lellikki-salasanasuojaus. Moisen saisi auki sekunneissa.
Sanoista tekoihin, vai mitä ;-)
-Grey-
Jonkun 7-merkkisen ehkä saa, mutta tuosta kun kasvaa muutamalla merkillä niin ei se enää niin nopeasti käykään.
Siinäpä se hunajavohveli :). Purkamiseen kulunut aika kasvaa ekspotentiaalisesti suhteessa siihen monta kirjainta salasanassa on. Toisekseen täytyy myös ottaa huomioon, että harvoin salanoissa käytetään numeroiden ja aakkosten lisäksi muita merkkejä (tietenkin poikkeuksia on, mutta suurin osa ihmisistä ei erikoismerkkejä käytä).
Ja moni käyttää salasanaa, joka on yleensä helppo, sana tai numerosarja. Ja vielä harvemmin se on yli 7 merkkiä pitkä.
Hm, jos yli seitsemän merkkiä alkaa olemaan vaikea, niin miten vaikea on sitten 14 merkin mittainen salasana?
-Grey-
7 merkkisissä salasanoissa on 255^7 eri mahdollisuutta jotka pitää testata, kaksi kertaa pidemmissä salasanoisssa onkin 255^14 eli tarkistettavaa on n. 7*10^16 kertaisesti - ja esimerkiksi 4 merkkinen md5-hashi on huomattavasti nopeampi tarkistaa kuin 10 merkkinen, joten aikaa menee kyllä reippaasti enemmän kuin "vain" 7*10^16 kertaisesti. Jos oletetaan että 7 merkkinen salasana saadaan kräkättyä sekunnissa niin 14 merkkisen kräkkäämiseen kuluu ainakin 2.5 miljardia vuotta. (oikaiskaa jos laskin ihan ketuilleen)
Eli itse pidän kyllä MD5:ttä ihan riittävän luotettavana salausalgoritmina - ainakin tämän ketjun aiheeseen riittävä : "yksinkertainen salasanasuojaus".
Ja jos ei ole kaikkia merkkejä käytössä, vaan pelkkä perusmerkistö, niin etsintään menevä max. aika pienenee tuhat kertaisesti kun meillä on 7 merkkinen salasana (MD5-hashilla on 256^16 eri vaihtoehtoa, ja harvemmin käytetään muita kuin perusmerkkejä, eli vaihtoehtoja on n. 6538825 kertaa vähemmän)
Mikseipä tekesi MD5-salausta kahteen kertaan. Tämä ainakin hidastaa salauksen purkamista.
tee oma salausFunktio, jota käytät aina sivuillasi.
esim.
<? function Salaa($salattava){ $palauta = md5( "hieman" . md5( "parempi" . $salattava . "salaus") . "tekniikka" ); return $palauta; } ?>
Tällöin tyhjät arvot eivät ainkaan palauta sitä md5:n tuttua merkkijonoa.
Esimerkiksi GData on hassunhauska MD5-tietokanta. Itse suosittelisin jonkinlaista suolausta. Itselläni on ollut tapana käyttää SHA1-hasheja, joita kait pidetään turvallisempina kuin MD5:tä. Tosin Slashdotissa taisi olla äsken uutinen entistä tehokkaammasta hyökkäyksestä SHA1:tä vastaan...
En nyt nopeasti huomannut oliko kukaan ottanut huomioon että salasanan pituutta ei tiedä kräkätessä joten vaihtoehdot on:
1 (tyhjä) +
127^1 (oletetaan että on vain low-ascii) +
127^2 +
127^3 +
127^4 +
127^5 +
127^6 +
127^7 = aikas monta (jos en väärin laskenut niin 537 138 072 028 286, 537 biljoonaa ja rapiat). Jos oletetaan että kone kokeilee 10 000 salasanaa sekunnissa (keskiarvoisesti), ja salasana löytyy 7-merkkisten alkupuolelta (ensimmäisestä viidenneksestä), kestää koneelta silti reilut 350 vuotta salasanan purkaminen (sillä edellytyksellä etten laskenut kiireessä mitään kohtaa väärin)...
Suolaus on tietenkin hyvä tapa, samoin kuin SHA1 yms. mutta loppujen lopuksi tulee kuitenkin se palikkakäyttäjä joka laittaa salasanaksi God1 joka löytyy jokaisesta listasta top10. Eli heikoin lenkki on ehkä kuitenkin aina se käyttäjä...
Jos tietynpituisen salasanan selvittäminen onnistuu järkevässä ajassa, kaikkien lyhempien salasanojen tarkistaminen lisäksi ei aiheuta ongelmia. Jos salasanan pituus on korkeintaan p ja merkistön koko k, kokeilujen määrä huonoimmassa tapauksessa voidaan laskea kaavalla (k ^ (p + 1) - 1) / (k - 1).
Esimerkki: Käytössä on kirjaimet a - z ja A - Z (eli yhteensä 52 merkkiä) ja salasanan pituus on korkeintaan kuusi merkkiä. Nyt pitää kokeilla (52 ^ (6 + 1) - 1) / (52 - 1) = 20158268677 merkkiyhdistelmää, jotta salasana varmasti löytyy. Jos salasana on varmasti juuri kuusi merkkiä pitkä, yhdistelmiä on 52 ^ 6 = 19770609664, joten homma ei mainittavasti helpotu. Jos tietokone ehtii kokeilla 100000 salasanaa sekunnissa, aikaa kuluu korkeintaan 197700 s = 55 h.
Meinaako nuo laskennat että MD5-hashi, mitä puretaan, on jo tiedossa?
Joo, koska muuten sekunnissa kokeiltavien salasanojen määrä on erittäin paljon pienempi. On myös hieman epäilyttävää, jos tietty käyttäjä yrittää kirjautua sivustolle miljoonin eri salasanoin.
Tässä MDCrackin kotisivuilta jotain tuosta hashien bruteforcauksien nopeuksista:
CPU / System used: AMD Athlon 1.8Ghz / Win XP pro,
MDCrack Version: mdcrack 1.2.
MD5: 5 808 949 h/s.
MD4: 9 334 967 h/s.
NTLM1: 5 489 462 h/s.
Jeps tuota bruteforcausta on tullut joskus aikoja sitten kokeiltua.
Aihe on jo aika vanha, joten et voi enää vastata siihen.