Jos on php scripti joka lähettää lomakkeen tiedot, miten voi varmistaa ettei kukaan muu käytä sitä, kuin samalla palvelimella sijaitseva sivu? Ettei kukaan muu tee html-formia, joka käyttää mun php skriptia tiedon lähettämiseen?
Tietoturva
miten.
6750
0Äänestä
Muut lukivat myös
Ketjusta on poistettu 4 sääntöjenvastaista viestiä.
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 6
Vanhimmat
http://www.mvnet.fi/index.php?osio=Kotisivun_teko&sivu=Palautelomake_PHPll%E4
Katsele koodin alkuosaa.
$HTTP_REFERER-muuttujaan (kertoo miltä sivulta kävijä on tullut sivullesi) perustuva tiedon alkuperän tarkistus on kohtalaisen hyvä suoja, mutta pelkästään siihen ei pitäisi luottaa, sillä kaikki selaimet eivät edes lähetä REFERER-tietoja (selaimen asetukset ja palomuuri voivat estää REFERER-tiedon lähettämisen). Myös käyttäjän välityspalvelin (proxy) voi estää tietojen välittymisen.
http://www.parse-error.com/display_page.php?page_id=84
Ja jos selain ei lähetä sitä, niin lomake ei toimi silloin ollenkaan :(
"$HTTP_REFERER-muuttujaan (kertoo miltä sivulta kävijä on tullut sivullesi) "
Käyttäkäämme niitä superglobaaleja niin ei tule ongelmia, monissa paikkaa laitettu registerglobaalit pois jolloin $HTTP_REFERER jne... eivät toimi, sekä kun PHP6 tulee niin tuommosia ei saa edes asetuksia kääntämällä toimimaan. Jotenka laittakaamme $_SERVER['HTTP_REFERER']
"sillä kaikki selaimet eivät edes lähetä REFERER-tietoja....."
Sekä on syytä muistaa, että REFERER-tieto tulee käyttäjältäpäin jotenka esim ihan perus PHP:n tiedosto functiolla voidaan lähettää haluttu REFERER-tieto, jotenka tuo ei suojaa periaatteessa yhen yhtään. Myöskään GET metodin vaihtaminen POSTiin ei suojaa yhtikäs mitään. Tietenkin nuo saattaa ehkä estää joitain teinejä lähettämästä
Hyviä juttuja on, että sallit lähetyksen vain tarvittaviin email osotteisiin, tällöin scriptiäsi ei voida käyttää spammaamaan muita. Sekä rajoitat vaik yks viesti viides minuutis käyttäjält.
Tärkeitä on kuitenkin muistaa, että jos lomake ja scripti on julkisessa netissä niin kuka tahansa voi niitä käyttää mistä tahansa, ei siis todellakaan välttämättä sivuiltasi.
Yleisesti nuo sivut sijaitsevat palvelimella www-hakemistossa. Jos laitat sen lomakkeenkäsittelijän alempaan kansioon, niin silloin siihen ei pääse muualta käsiksi.
Esimerkiksi kun osoiteriville näpytellään osoite http://www.mundomaini.net/ niin silloin etsitään tiedostoa index.php hakemistosta /home/www/
Pistät sen lomakkeenkäsittelijän hakemistoon /home/
tai vaikkapa /home/scriptit
tai ihan mihin vain johon ei pääse ulkopuolelta käsiksi.
"Jos laitat sen lomakkeenkäsittelijän alempaan kansioon, niin silloin siihen ei pääse muualta käsiksi."
Aivan, ainoostaan palvelimella oleva scripti jne... pääsee siihen käsiksi. Mutta tuo ei toimine tässä tapauksessa, sillä esim palautteen jne... lähettäminen ei onnistu ellei lomakkeen käsittelijään pääse käsiksi netinkautta. Vai mitä meinasit laittaa formin actioniksi?
Ellei sitten kysyjä todellakin halunnut lomaketta joka toimii vain palvelimelta käsin.
Tietenkin voit tehdä varmistuskoodin kuvana joka pitää naputella lomakkeeseen ennen lähetystä (tällä oli joku hieno termi kun muistas sen), sillä pystyy aika hyvin estää ettei lomakkeen käsittelijääsi käytetä spammaamiseen ainakaan paljoa, mutta tämä vaikeuttaa myös palautteen lähettäjiä jne...
Mutta aina voi vain vaikeuttaa, mutta ikinä ei kokonaan estää.
Käytä fixattua vastaanottajaa. Ketä kiinostaa sen jälkeen käyttää lomakkeen käsittelijääsi muilta sivuilta, kun vastaanottaja on aina sinä.