Olen tekemässä eräälle autokoululle nettisivuja jonne pitäisi tulla ilmoittautumislomake. Tarkoitus olisi, että lomakkeen tiedot lähetetään autokoulun sähköpostiin PHP:n mail-funktiolla. Lomakkeen turvallisuus alkoi mietityttämään kun sain tietää että ilmoittautujan on ilmoitettava mm. henkilötunnuksensa.
Lomakkeen HTML-osa sijaitsee tiedostossa "ilmoittautuminen.php" johon sisällytetään "signup.php"-tiedosto (käsittelee lomaketiedot ja lähettää sähköpostin). Lomakkeen action-parametri on PHP_SELF ja method on POST.
Kuinka hankalaa on kaapata POST-dataa jos se lähetetään samalle tiedostolle kuin joka sen lähetti (ilmoittautuminen.php)? "ilmoittautuminen.php" ja "signup.php" sijaitsevat samassa kansiossa. Mail-funktiokaan ei taida soveltua yksityisen tiedon postittamiseen?
Löysin netistä muutaman sivun jotka käyttävät tavallisen näköistä ilmoittautumislomaketta jossa pyydetään jopa henkilötunnusta, eikä yhteys ole salattu. En kuitenkaan itse halua tehdä samankaltaista järjestelmää jos se ei ole turvallinen.
Ottamatta kantaa suoraan tuohon lomakeasiaan...
Jotta lopputulos olisi kaikille osapuolille paras, niin tee sivusto valmiilla julkaisujärjestelmällä, niin useimmat tietoturva-aukot on valmiiksi paikattu, tai paikataan niiden tultua ilmi. Tällöin sivuston rattaiden huolto ei ole yhden miehen harteilla.
kayttaja-5600 kirjoitti:
Kuinka hankalaa on kaapata POST-dataa jos se lähetetään samalle tiedostolle kuin joka sen lähetti (ilmoittautuminen.php)? "ilmoittautuminen.php" ja "signup.php" sijaitsevat samassa kansiossa.
Kyllä TCP-yhdeyden kaappaaminen on mahdollista, mutta en kyllä keksi mitään syytä, miksi sillä olisi väliä, onko lomakkella sama URL kuin sen käsittelevällä skriptillä. Kaappaus ei ole kovinkaan vaikeaa, jos käyttäjän ja palvelimen väliin saa laitettua raudan, joka roitaa kaappauksen. Ilmankin rautaa kaappaus onnistuu, mutta on kyllä aika paljon vaikeampaa. Jos lomakkeessa on salaista tietoa, kannattaa se lähettää HTTPS-protokollalla
kayttaja-5600 kirjoitti:
Mail-funktiokaan ei taida soveltua yksityisen tiedon postittamiseen?
Todennäköisesti mail-funktio on asetettu niin, että se käyttää salaamatonta SMTP-yhteyttä, jonka voi myös kaapata kuten salaamattoman HTTP-yhteydenkin.
Jos koet, että lomakkeen lähetys tarvitsee salata, niin käytä HTTPS-yhteyttä. Todennäköisesti se lomakkeen data kuitenkin kulkee jossain vaiheessa salaamattoman yhteyden läpi, varsinkin jos datan lähettää sähköpostilla eteenpäin.
Lisäksi mail-funktion käytössä tärkeämpää olisi osata siivota viestistä ylimääräiset merkit, jottei erilaiset spämmäämisvaihtoehdot olisivat mahdollisia.
Toi lomaketietojen käsittely on jo kondiksessa. Ilmoittautuja pystyy vaikuttamaan viestin sisältöön ainoastaan yhteystiedoillaan jotka tarkistetaan luvattomien merkkien varalta.
Koska tää järjestelmä vaikuttaa kuitenkin sen verran epävarmalta, pitää se varmaan toteuttaa muulla tavalla.
kayttaja-5600 kirjoitti:
Koska tää järjestelmä vaikuttaa kuitenkin sen verran epävarmalta, pitää se varmaan toteuttaa muulla tavalla.
Millä tavalla epävarmalta, tietoturvan suhteenko? Jos lähetät lomakkeen HTTPS:llä, etkä lähetä tietoja eteenpäin sähköpostilla, vaan teet sivun, josta voi käydä tarkistamassa uudet ilmoittautumiset, ei tietoturvassa pitäisi olla mitään vikaa.
Mitenköhän musta tuntuu, että sähköposti on kuitenkin se turvallisempi tapa, kuin se, että tallennetaan toisten henkilöturvatunnuksia jollekin random-sivustolle, jonka tietoturvasta emme tiedä mitään.
Lebe80 kirjoitti:
Mitenköhän musta tuntuu, että sähköposti on kuitenkin se turvallisempi tapa, kuin se, että tallennetaan toisten henkilöturvatunnuksia jollekin random-sivustolle, jonka tietoturvasta emme tiedä mitään.
Miten niin random-sivustolle?
Kyllä nettisivusta saa tehtyä pienellä vaivalla melko turvallisen, tai ainakin se on helpompaa kuin sähköpostin lähettäminen niin, että viesti kulkee vain salatun yhteyden läpi. Eihän lähettäjä voi mitenkään tietää, millaisella yhteydellä vastaanottaja viestin lukee.
Tietojen lähetys mail-funktiolla on yhtä turvallista kuin sähköpostin lähetys tavallisella sähköpostiohjelmalla, joten jos aiemmin on ilmoittauduttu suoraan sähköpostitse, lomakesysteemi ei mitenkään heikennä tilannetta, ellet koodaa siihen jotain aivan käsittämätöntä bugia.
-tossu- kirjoitti:
Jos lähetät lomakkeen HTTPS:llä
Eikö HTTPS:ää varten tarvii SSL-varmenteen?
Metabolix kirjoitti:
Tietojen lähetys mail-funktiolla on yhtä turvallista kuin sähköpostin lähetys tavallisella sähköpostiohjelmalla, joten jos aiemmin on ilmoittauduttu suoraan sähköpostitse, lomakesysteemi ei mitenkään heikennä tilannetta, ellet koodaa siihen jotain aivan käsittämätöntä bugia.
Eihän PHP:n mail-viestejä salata mitenkään? Laittaisitteko ite sotunne menemään lomakkeella jonka tiedätte lähettävän tietonne yksinkertaisena sähköpostiviestinä?
Noilla autokouluilla on oma SSL-salattu järjestelmänsä jonka kautta voi ilmottautua kursseille. Aattelin alunperin että ois saanu custom-ilmettä tohon lomakkeeseen mut sitten tuli nää hetu-vaatimukset. Varmaan paras käyttää tota valmista systeemiä...
kayttaja-5600 kirjoitti:
Eihän PHP:n mail-viestejä salata mitenkään?
En väittänytkään niin. Sanoin, että mail-funktiolla lähetetty viesti toimii yhtä turvallisesti kuin muutkin sähköpostiviestit. Pointtini oli, että muitakaan sähköposteja ei automaattisesti salata.
Jos kerran on jo valmis, turvallinen järjestelmä, miksi pitäisi tehdä uusi?
Niinkuin sanoin edellisessä viestissä: "Aattelin alunperin että ois saanu custom-ilmettä tohon lomakkeeseen mut sitten tuli nää hetu-vaatimukset."
Aihe on jo aika vanha, joten et voi enää vastata siihen.