Terve,
salasanasuojausjuttuja on tälläkin saitilla käsitelty, mutta äkkiseltään en ole löytänyt suoraa vastausta mieltä askarruttavaan kysymykseen... Eli jos hakemisto on suojattu .htaccesin avulla, onko mitään järkevää mahdollisuutta hoitaa kirjautumista jotenkin muuten kuin selaimen pompauttamalla kirjautumisikkunalla? Eli esim kirjautumislomakkeen ja PHP:n avulla kikkaillen?
Voit tehdä html-kielellä formin.
<!-- www.petjatouru.com --> <form name="kirjautumislomake" method="post" action=""> <input type="text" name="ktunnus" /> <input type="password" name="ssana" /> <input type="submit" value="Kirjaudu" /> </form>
Oletan sinun nyt tässä tapauksessa hallitsevan ainakin php:n alkeet. En valitettavasti voi auttaa pitemmälle, koska en tiedä haetaanko tiedot tietokannasta, millä nimillä jne.
Ja jos kyseessä on erityisesti hakemiston suojaus, voit tehdä htaccesilla yleisen suojauksen ja php:n avulla jonkinlaisen hakemiston luku -skriptin.
P.S. htacces kahdella ässällä, näin: htaccess
Empä oo viel nähnyt, että haettaisiin htaccess-tunnukset tietokannasta. Noh, kai sekin voi olla mahdollista.
PHP:n $_SERVER-taulukosta löytyy PHP_AUTH_USER ja PHP_AUTH_PW. Kokeile niitä.
Nytpä sotkit asiat pahanpäiväisesti. ;)
En toki tarkoittanut htaccess-tunnuksia tietokannasta hakuun.
Tarkoitin siis, että hakemisto suojataan htaccessia hyödyntäen kokonaan ja kun käyttäjä menee vaikka index.php:lle selaimen kautta, hän syöttää salasanan ja tunnuksen (jotka noudetaan sitten vaikka sieltä tietokannasta), jolloin hänelle luodaan istunto ja hän näkee PHP:n kautta hakemistolistauksen.
Jos ymmärsin asian oikein, että et halua sitä selaimen kirjautumisikkunaa ruudulle, niin sulla taitaa olla pari toteutettavissa olevaa vaihtoehtoa. Ensimmäinen on juurikin tuo html-kirjautumislomake ja php-rimpsu lomakkeen käsittelijänä, joka sitten vertaa tunnusta ja salasanan hashia tiedostossa / tietokannassa olevaan ja avaa käyttäjälle istunnon. Silloin pitää aina erikseen tarkistaa kirjautumista edellyttäviä sivuja avatessa onko käyttäjällä voimassa oleva istunto.
Htaccessiakin voi käyttää pienen kikkailun kera, jolloin ei tarvitse itse huolehtia tiedostojen suojaamisesta vaan ne ovat kaikki automaattisesti suojattuna. Voit tehdä itse html-kirjautumislomakkeen ja käyttää pätkän Javascriptiä muuttamaan osoitteen niin, että htaccess-suojauksen tunnukset välitetään jo osoiterivillä eikä mitään erillistä kirjautumisikkunaa aukea. Molemmissa tavoissa on hyviä ja huonoja puolia ja sieltä saattoi jotain tullakin jo ilmi, mutta kannattaa ensin tutustua asiaan ja tehdä päätökset tarpeiden pohjalta. Alla vielä lyhyt esimerkki jälkimmäisestä menetelmästä.
<html> <body> Tunnus: <input type="text" id="tunnus" /> Salasana: <input type="password" id="passu" /> <input type="button" value="Kirjaudu" onclick="doLogin()" /> </body> </html>
var url = "www.foo.com/bar/"; // Htaccess-suojatun hakemiston osoite function doLogin() { // Muodostetaan osoite http://tunnus:passu@url ja ohjataan selain siihen location.href = "http://" + document.getElementById('tunnus').value + ":" + document.getElementById('passu').value + "@" + url; }
Aiemmin kirjoittamani thread käsitteli htaccessiin kirjautumista dynaamisella IP:llä. Asia ei sinänsä selvinnyt, mutta tässäkin voisi periaatteessa tallentaa hashin (tai minkä nyt tallentaakin ikinä) kekseihin ja jos se täsmää, päästäisi sisään.
Täytyypä testailla noita PHP_AUTH_USER ja PHP_AUTH_PW -kikkailuita, kunhan taas on aikaa naputella. Mutta kuvaanpa nyt vielä haluttua tilannetta, jos joku vaikka inspiroituu vielä keksimään vinkkejä :)
Eli on olemassa www.osoite.com/kansio, jonka sisältämät tiedostot haluan pitää rajatun porukan nähtävillä. Siispä /kansio on suojattu .htaccessin avulla. Homma toimii, ja kirjautuminen tapahtuu nyt selaimen kirjautumisikkunan kautta.
Varsinainen kysymykseni on, että onko jotain järkevää tapaa tehdä tuota muuten samaa kirjautumismanööveriä siten, että käyttäjätunnus ja salasana kysyttäisiin nätisti saitin ulkoasussa olevalla html-formilla, eikä selaimen pompauttamalla ikkunalla.
Siis: www.osoite.com/kirjaudutallasivulla.php sisältäisi kirjautumislomakkeen, joka lähettäisi syötetyt tunnaritiedot vaikkapa nyt sitten www.osoite.com/kansio/index.php:lle, jossa /kansio/.htpasswd:n mukaiset tunnukset suorittaisivat kirjautumisen ja antaisivat käyttöoikeudet /kansio:n tiedostoihin.
Onko muuten tietoturvan kannalta jotain eroa, kysytäänkö nämä tiedot formilla vai selaimen omalla ikkunalla? Tai oikeammin, onko formin lähettämisessä otettava jotain huomioon, jotta tietoturva pysyisi samalla tasolla?
Toiveesi ei ole mahdollinen, jos haluat nimenomaan käyttää htaccessia. Voit kuitenkin soveltaa tätä edellä annettua neuvoa.
lainaus:
Jos ymmärsin asian oikein, että et halua sitä selaimen kirjautumisikkunaa ruudulle, niin sulla taitaa olla pari toteutettavissa olevaa vaihtoehtoa. Ensimmäinen on juurikin tuo html-kirjautumislomake ja php-rimpsu lomakkeen käsittelijänä, joka sitten vertaa tunnusta ja salasanan hashia tiedostossa / tietokannassa olevaan ja avaa käyttäjälle istunnon. Silloin pitää aina erikseen tarkistaa kirjautumista edellyttäviä sivuja avatessa onko käyttäjällä voimassa oleva istunto.
Aihe on jo aika vanha, joten et voi enää vastata siihen.