Terve!
ELi voisko joku väääntää rautalangasta(ja ihan oikeesti rautalangasta) miten kannattaa tehä kirjautminen admin osioon ja niin että se turvallinen..Tietokannassa on jo taulu USERS(id,username,password)....mitä seuraavaksi?? Ja selittäkää nyt mikä tuo suola+md5 on...
Terv.
Aloitteleva "PHP säveltäjä"..
Salasana on tallennettuna tietokantaan arvolla "3d25e975543662346b22d066cc2523e4", joka taas muodostuu funktiolla md5("fR?!fyE1q_kissa2")
Jossa fR?!fyE1q_ on suola
Ja kissa2 on käyttämän kirjoittamana salasana.
3d25e975543662346b22d066cc2523e4 on siis paljon turvallisempi käyttäjälle, mikäli ulkopuolisilla ja tietenkin myös ylläpitäjällä on pääsy tietokantaan.
Kirjautuminen kannattaa tehdä php:llä. Javascriptillä sitä ei saa tehdä. Kun adminosioon kirjaudutaan niin ensin pitää tarkistaa salasanan tiiviste. MD5 on epäturvallinen (Tein kerran sanakirjahyökkäysohjelman.) Käytä jotain muuta algoritmia kuten jotakin SHA algoritmia.
Kun adminalueelle on kirjauduttu niin tallenna tietokantaan kirjautujan ip ja laita kirjautujalle yksilöllinen tunniste-eväste joka vanhenee istunnon lopuksi ja joka tallennetaan myös palvelimelle. Näin adminsivu voi tarkistaa onko käyttäjä oikeasti kirautunut sivulle vai onko sivulle tultu sivuhistorian kautta.
Kannattaa lukea PHP oppaat. Varsinkin tietoturvaosio.
reino tarkoittanee tätä sivua:
https://www.ohjelmointiputka.net/oppaat/opas.
reino kirjoitti:
MD5 on epäturvallinen (Tein kerran sanakirjahyökkäysohjelman.) Käytä jotain muuta algoritmia kuten jotakin SHA algoritmia.
SHA-algoritmit on ihan yhtä alttiita sanakirjahyökkäyksille.
On totta että MD5 on kryptografisesti heikompi kuin SHA1 ja paremmat, mutta miksi sitten mainita sanakirjahyökkäys siinä yhteydessä? Toisaalta SHAt ei ole salasanojen tiivistämiseen kovin merkittävästi MD5:ttä parempia, joten miksei saman tien suositella vaikka bcryptiä?
Itse tekisin varmaankin näin:
$suola=md5(uniqid(mt_rand(), true)); //Suola jotenki näin kun käyttäjä luodaan $tiiviste=sha1($salasana . $suola); //ja kirjautuessa
EDIT: Suola pitää sitten olla tietokannassa ja sitä voi vaikka vaihtaa joka kirjautumiskerralla.
Kiitos, koitan alkaa vääntämään.
Grez kirjoitti:
miksei saman tien suositella vaikka bcryptiä?
On tietysti mahdollista tehdä ihan ikioma salausmenetelmä. Siis tehdä funktio, joka luo salauksen ihan omaperäisesti ja käyttää salausavainta / avaimia.
Tietokantaan tallennettavan tiivisteen lisäksi pitää miettiä, mitä tallennetaan käyttäjälle evästeeseen. Sinne ei nimittäin kannata tallentaa salasanaa eikä sen tiivistettä vaan täysin näistä riippumaton istunnon tunniste. Tämä suojaa käyttäjää vahingoilta siinä tilanteessa, että hakkeri varastaa evästeet: käyttäjän salasana ja sen tiiviste pysyvät turvassa, ja ainoastaan istunnon tunniste tarvitsee vaihtaa.
pistemies kirjoitti:
Grez kirjoitti:
miksei saman tien suositella vaikka bcryptiä?
On tietysti mahdollista tehdä ihan ikioma salausmenetelmä. Siis tehdä funktio, joka luo salauksen ihan omaperäisesti ja käyttää salausavainta / avaimia.
Millä tavalla tuo mielestäsi liittyi Grezin kysymykseen? bcryptin käyttö on aivan eri asia kuin "ikioman salausmenetelmän" eli vaarallisen purkkaviritelmän tekeminen, ja tiedon salaus on myös aivan eri asia kuin tiivisteen laskeminen.
Aloita homma täältä: http://www.openwall.com/articles/PHP-Users-Passwords
Tuon artikkelin ohjeistuksella pääset hyvään alkuun (bcrypt jne.), ja tulee selväksi kaikki nämä nyanssit mitä liittyy aiheeseen. Tällä tavoin vältät yleisimmät sudenkuopat ja harhaluulot mitä tulee mm. tiivisteisiin, suolaukseen, "salaisiin suoliin" ja muihin mitä ihmeellisimpiin aivoituksiin mitä kehittäjät ovat onnistuneet keksimään osana salasanojen käsittelyään.
Artikkelin takaa löydät linkin phpass-kirjastoon: http://www.openwall.com/phpass/ minkä pohjalta voit aloittaa (valmis koodi, joten riittää että rupeat käyttämään sitä artikkelin kuvaamalla tavalla).
Tämän jälkeen pääset sitten tuonne yllä mainittuun sessio-systeemiin ja sen nyansseihin, sekä lopuksi voit viimeistellä kokonaisuuden ottamalla suojatun yhteyden (https) käyttöön (mikä itsessään torppaa useamman ilkeän ongelman).
ISO KIITOS TÄSTÄ!!homma pelaa..
Aihe on jo aika vanha, joten et voi enää vastata siihen.