Jos teen webbisivun ja lisään siihen lomakkeen, johon käyttäjä kirjoittaa PHP-koodia, se suoritetaan. Voinko jostain kertoa PHP:lle, että koodia ei halutakaan suorittaa? Harmaita hiuksia aiheuttaa myös se, että krakkeri voi kirjoittaa lomakkeelle koodia heksadesimaalimuodossa, joten miten tuohon voisi varautua?
Ei sitä lomakkeen lähettämää PHP-koodia suoriteta, ellet sitä nimenomaan halua, vai mitä tarkoitat? Suoritat sen tahallasi eval()-funktiolla?
Löysin tänään asiaan toisen mielipiteen: http://keskustelu.suomi24.fi/show.fcgi?category=108&conference=500000000000005&posting=22000000021279556 , ja myös oma kokeilu on toista mieltä. Täytyy tutustua säännöllisiin lausekkeisiin.
Mielelläni näkisin kokeilukoodisi, sillä PHP:n muuttujia suoritetaan vain kun
a) ne ajetaan evalin läpi tai
b) ne ajetaan preg_replacen tain muun vastaavaan säännöllisen lausekkeen parseroijan läpi lisävivulla /e (evaluate) tai
c) ne ajetaan execin läpi...
Toki lomakkeelta tulevaa dataa tulee käsitellä sen mukaan mihin se data on menossa:
1. Data menossa tietokantaan: mysql_real_escape_string tai muu vastaava SQL Exploitin estämiseksi
2. Data menossa sivulle: htmlentities sivuston tagien sulkemisen ja omien tagien syöttämisen estämiseksi, estää mukavasti myös javascriptit tyyliin alert("Tämän sivuston ylläpitäjä ei vaihda ikinä sukkia!!111");
3. Data menossa sähköpostiin: spämmin blokkaus, vaihtoehtoja mm. piilokenttä lomakkeella jonka täyttö johtaa hylkäykseen, rivinvaihtojen ja/tai email-otsakkeiden etsiminen viestistä tai äärimmäisenä vetona palikkatesti (tapoja esitelty tekemässäni spämmiturvallisessa lomakekäsittelijässä)
Koodini oli:
Sotkua tuli kun php-koodia muuttujaan työnsin.
minkälaista koodia laitoit muuttujaan? Saatko tuolla koodilla esimerkiksi poistettua tiedoston kun laitat GET-jonona expr:lle unlink('index.php');? Jos saat, on php:n asetuksissa jokin tosi pahasti vialla, jos et niin silloin et onnistunut suorittamaan PHP-koodia vaan onnistuit tekemään jotain muuta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.