Olen nytten tässä koko illan ajatellut miksi tämä pätkä ei toimi:
<?php $sal = md5( "$_POST['sal']" ) if( md5( "zz67adbeg" ) === $sal ) { header("Location: kirjoita.php"); } else { header("Location: index.html");} ?>
Osaisiko kukaan auttaa kun olen vähän huono php:eessä...
kiitoksia.
Olet kyllä ymmärtänyt tuon hashauksen tarkoituksen hieman väärin. Sen tarkoitus on se, että salasana ei lue missään selvällä kielellä. Nyt jos joku pääsee kurkkimaan tuota php-koodia, niin hän näkee siitä suoraan tuon salasanan.
Eli näinhän se menisi turvallisemmin:
<?php $hash=file("hashi.dat"); //oletetaan että tiedoston ensimmäisellä rivillä on salasanan md5-hashi $sal=md5($_POST['sal']); if ($sal == $hash[0]) { header("Location: kirjoita.php"); } else { header("Location: index.html"); } ?>
Ja sitten tuon passutiedoston voi vielä suojata vaikka htaccessilla, jolloin tietoturva on melko hyvällä mallilla.
Passutiedosto kannattaa laittaa jonnekin ihan muualle kuin webbipalvelimen käyttämään hakemistoon, ei tarvi sit .htaccessia käyttää ja on vähän paremmin suojassa.
Kaikkein parhaassa suojassa salasana on luultavasti kryptattuna tietokannassa. Voi käyttää vaikka AES_ENCRYPT() tai SHA() toimintoja. Silloin se on kryptattu ja se itse tietokanta on suojattu salasanalla.
Miten saisi tän
header("Location: kirjoita.php")
turvallisemmaksi? Niin, että siihen ei pääse käsiksi ellei ole kirjautunut. Se varmaan onnistuisi jollain cookiisella, mutta mulla tuli oikosulku ja mä en tajua sitä.
renni kirjoitti:
Passutiedosto kannattaa laittaa jonnekin ihan muualle kuin webbipalvelimen käyttämään hakemistoon, ei tarvi sit .htaccessia käyttää ja on vähän paremmin suojassa.
Tietysti sitten jos ei hostaa omaa sivua niin se voikin olla astetta hankalampaa.
thekoodaaja: Itse muuttaisin tuon turvallisemmaksi sessioilla:
1.) Teet kirjautumissivun, jossa asetat tiedon käyttäjän kirjautumisesta sessioon.
2.) Tarkistat kirjoita.php:ssä onko kyseinen sessio asetettu
Muista aina session_start(); kaikkien sivujen alkuun, joissa käytät sessioita.
Näistä löytyy:
https://www.php.net/session/
http://mureakuha.com/artikkelit/14
http://shiflett.org/php-security.pdf
Löytyy sessioista tietoa putkastakin:
https://www.ohjelmointiputka.net/oppaat/opas.
Tuo Putkan sessiotieto ei riitä tuon suojauksen tekemiseen. Alkeet tietysti löytyy. Siinä opetettu unset($_SESSION['bar']); ei vielä ainakaan itsellä riittänyt uloskirjautumiseen, piti komennella session_destroy();
tsuriga kirjoitti:
renni kirjoitti:
Passutiedosto kannattaa laittaa jonnekin ihan muualle kuin webbipalvelimen käyttämään hakemistoon, ei tarvi sit .htaccessia käyttää ja on vähän paremmin suojassa.
Tietysti sitten jos ei hostaa omaa sivua niin se voikin olla astetta hankalampaa.
Kyllä minulla ainakin on serverin kotihakemisto != webbipalvelimen käyttämä hakemisto kaikkialla. Niin paitsi tietenkin poislukien mbnet, mutta siellä nyt ei ole edes tietokantaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.