Hei,
Minulla on käytössä Javascript salasanasuojaus. Tämä prompt-ikkuna on mielestäni turvallisempi vaihtoehto javascript-salasanasuojauksiin koska tässä ei voi tarkastella lähdekoodia selaimessa ainakaan ihan helposti. Kysymys kuuluukin:
tämä koodi laittaa formit itsenäisiin ikkunoihin, eli salasana toisessa ikkunassa ja kirjautumisnimi toisessa. Miten saisin kummatkin kentät yhteen ikkunaan?
Tässä koodi:
<HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- Begin function LogIn(){ loggedin=false; username=""; password=""; username=prompt("Username:",""); username=username.toLowerCase(); password=prompt("Password:",""); password=password.toLowerCase(); if (username=="testi" && password=="salasana") { loggedin=true; window.location="membersarea.html"; } if (username=="guest2" && password=="login2") { loggedin=true; window.location="home-page2.html"; } if (loggedin==false) { alert("Invalid login!"); } } // End --> </SCRIPT> <BODY> <center> <form><input type=button value="Login!" onClick="LogIn()"></form> </center> </BODY> </HTML>
Testaajille:
Käyttäjätunnus: testi
Salasana: salasana
Htaccessin suosijoille:
Käytän freewebsiä, joten en voi käyttää htaccessia siellä!
Sincerely,
aksun
Prompt-ikkunaa ei voi muokata. Se on juuri tuollainen. Jos haluat hienomman, joudut tekemään sen HTML:llä.
Prompt-ikkuna ei ainakaan minusta vaikeuta lähdekoodin lukemista milliäkään, joten tuollaisesta suojauksesta ei ole oikeasti iloa. Eihän käyttäjä tarvitse edes salasanaa, kun lähdekoodista näkee suoraan, mille sivulle kirjautuminen vie.
Totuus on vain se, ettei JavaScriptillä pelkästään pysty tekemään kovinkaan käytännöllistä saati sitten turvallista kirjautumisskriptiä... Kannattaa tutustua siihen PHP:n.
Mikäli sinulla on pakottava tarve saada sivuille jokin JS-salasanasuojaus, suosittelen jotain tämäntapaista: http://weppipakki.com/js/salasana/anasalas.htm
Tuohon pitää tietysti lisätä vaikka AJAXilla toteutettu tarkistus, jos haluat antaa väärän salasanan tapauksessa jonkin kuvaavamman virheilmoituksen kuin 404-errorin.
Edelliseen ehdotukseen lisäisin vielä, että jos sivun lataa AJAXilla nykyisen sivun päälle, osoitekaan ei yleensä jää selaimen historiaan.
<!DOCTYPE html> <html> <head> <title>Salaiset sivut</title> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> /* <![CDATA[ */ function lataa(sivu) { sivu = "salasivut/" + escape(sivu) + ".html"; $("html").load(sivu, null, function(vastaus, tila) { if (tila == "error") { alert("Virheellinen salasana!"); } }); } /* ]]> */ </script> </head> <body> <p>Sivu: <input id="sivu" /> <button onclick="lataa($('#sivu').val());">Lataa!</button></p> </body> </html>
Mikään ei myöskään velvoita käyttämään erikseen tunnusta ja salasanaa, vaan hyvin voi olla vain yksi sana, joka ajaa molemmat asiat.
Metabolix kirjoitti:
Edelliseen ehdotukseen lisäisin vielä, että jos sivun lataa AJAXilla nykyisen sivun päälle, osoitekaan ei yleensä jää selaimen historiaan.
Ajattelin, että AJAXilla vain tarkistettaisiin salasanan oikeellisuus ja sivu ladattaisiin normaalisti.
function logIn (salasana) { var pyynto = new XMLHttpRequest (); pyynto.onreadystatechange = function () { if (pyynto.readyState == 4) { if (pyynto.status == 200) location.href = pyynto.responseText; else alert ("Väärä salasana!"); } } pyynto.open ("GET", "salasana_" + escape (salasana) + ".txt"); pyynto.send (null); }
Aputiedostoa käytettäessä salasanan ei välttämättä tarvitse olla sama kuin sivun osoite. Tuota koodia tuskin kannattaa käyttää tuollaisenaan, vaan se kannattaisi ainakin muokata vanhemmille IE:ille sopivaksi. https://www.ohjelmointiputka.net/oppaat/opas.
Metabolix kirjoitti:
jos sivun lataa AJAXilla nykyisen sivun päälle, osoitekaan ei yleensä jää selaimen historiaan.
Tuohon tarkoitukseen on olemassa myös metodi location.replace(url)
. Toimintaa voi testata täällä: replace-linkkejä ei ainakaan chromella pysty peruuttamaan back-nappulalla. Muistaakseni tämä toimii oikein jopa IE7:lla.
jlaire, tarkoitus oli nimenomaan piilottaa sivun kaksi.html osoite, joka tässä menetelmässä on käytännössä sama kuin salasana.
Jaajaa, voisi jatkossa lukea koko ketjun ennen vastaamista. ^^
Tuossa on esimerkki siitä, miten turvallinen JS-systeemi voisi toimia. Koska JS:ää käytetään lähinnä silloin kun PHP tms. ei ole vaihtoehto, niin sisältö sivuille ladataan ajax-pyynnöillä.
Perusidea on se, että sisältö on salaisessa hakemistossa ihan plaintextinä. Polku tähän hakemistoon haetaan lukemalla kryptattu tiedosto, joka puretaan käyttämällä käyttäjän syöttämää salasanaa. Tämä kryptattu tiedostokin on vielä piilotettu antamalla sille nimeksi salasanan tiivisteen kymmenen ensimmäistä merkkiä. Tiedostossa on salaisen hakemiston lisäksi listattu myös tiedostot, joista sisältö alisivuille ladataan.
Järjestelmä on teoreettisesti haavoittuvainen siksi, että salasanan tiiviste pitää tallentaa keksiin, jotta sivun voisi refreshata menettämättä sessiota.
Salasana on siis 'mypw' ja salainen hakemisto 'secret/'.
(Kryptaus on oikeastaan turha mutta tulipa testattua sitäkin.)
Joo ihan okhan tuo näyttäis olevan tuo alchemistin suojaus. Tuskin tosiaan mitään kovin arkaa kannattis pitää suojattua tuolla tavoin. Tossahan ei kovin helpolla saa mitään estoa jotain salasanan purku ohjelmia vastaan, mutta eipä niille kovin usein tarvetta ole.
Aihe on jo aika vanha, joten et voi enää vastata siihen.