Hei!
Mikä on järkevin tapa näyttää käyttäjälle vain palvelun nimi tyyliin www.esimerkki.com? Eli koskaan ei näkyis mitään tiedostonnimiä, saatikka omalle koneelle tallennettavien tiedostojen kansiopolkuja (eikös tämä ole jo turvallisuusriskikin?).
Lueskelin äsken vanhoja ohjeita ja suosittelivat kovasti kehyksien käyttöä, onko se sitten järkevää?
Kehyksien kautta voidaan tiedostonnimet selvittää. Suosittelisin tällaista: indeksisisivu toimisi linkkinä kaikkiin muihin tiedostoihin, että esim sille annettaisiin GET-parametri ?sivu=<sivu> ja se includettaisi hakemistosta, jonka nimeä ei tarvitse kertoa käyttäjälle, oikean sivun. Tuon hakemiston voi vielä .htaccessilla salata suoralta käyttämiseltä. Jos et halua edes tuota get-parametria näyttää niin voit käyttää POST:ia, tai tallentaa käyttäjälle cookie, johon laitat millä sivulla hän on, tai tallennat ip:n mukaan tekstitiedostoon/tietokantaan sivun, mutta ota huomioon että jotkut koneet voivat tulla samasta ip:stä jos ovat saman reitittimen takana.
kettu kirjoitti:
Lueskelin äsken vanhoja ohjeita ja suosittelivat kovasti kehyksien käyttöä, onko se sitten järkevää?
Ei, kun se rikkoo alasivuille linkittämisen.
Jos ei halua näyttää tiedostonimiä osoiterivillä, voi rakentaa php:n avulla jonkun systeemin, missä esim.
...osoite.com/?pageid=1
...osoite.com/?pageid=2
jne... Ja sitten apachen RewriteEnginellä korjata osoiterivin seuraavaan muotoon
...osoite.com/1
...osoite.com/2
jne... Pysyy osoiterivi siistinä, mutta onhan niissä tiedostonimien näkymisessä kyllä omat hyvätkin puolensa, jos ne eivät ole kauhen pitkiä/rumia.
Edit. Äh, tätähän Sharp vähän tuossa jo sivusi, enpä huomannut.
Jos saat itse conffata Apache web palvelinta, niin siellä on valmis moduli sitä varten olemassa. Se on järkevin, paras sekä tehokkain tapa moiseen operaatioon.
--WIZ--
Pahin tietoturvariski on paskasti toteutettu index.php?sivu=blaa
Pitää nimittäin tarkistella mitä se saa includettaa ja millä sanoilla includetetaan. Jos PHP:ssä on suoraan
$sisältö = include($_GET['sivu']);
Niin mikään ei estä häntä includettamasta vaikka htaccess tiedostojasi jos et erikseen koodaa estoa sille.
Paljon kivempi on includetella omia php-skriptejä toisen serverille ;)
Tuon tietoturvariskin voi esim. tällaisella tavalla ohittaa: tietokantaan/tiedostoon on tallennettu sivun url ja sitä vastaava GET-parametri. Aina kun sivu ladataan, skripti etsii GET-parametria vastaavan rivin tiedostossa/tietokannassa, ja jos se löytyi, includetetaan vastaava url. Sitten ei pääse muille sivuille kuin niille mitkä on määritelty tietokannassa/tiedostossa.
En pidä niinkään pahana, jos käyttäjät näkevät eri sivutiedostojen nimet, mutta jos ladattavan tiedostolinkin kansiopolku näkyy käyttäjälle, niin olen pohtinut, että onko se turvallisuusriski? Paljastaako se jotain hyödyllistä jollekin kiusantekijälle? :-)
Esim. www.mallisivusto.com/tiedostot/word/malliword.
Aihe on jo aika vanha, joten et voi enää vastata siihen.