Terve,
Mulla on vähän ymmärrysongelma - taas.
Jos lomakkeelta tms. saadaan esim. $_POST-muuttujassa tekstiä. Mikä on turvallinen tapa käsitellä se ennen kuin suoritetaan varsinainen kysely?
Oon vähän hukassa, kun toisaalta suositellaan htmlspecialchars() ja toisaalla addslashes()-funktiota. Onko yhteiskäytössä mitään järkeä?
htmlspecialchars(addslashes($_POST['muuttuja']))
Lisätessäsi jotain kantaan, aja se mysql_real_escape_string-funktion läpi (tai käytä PDO:ta), tulostaessasi jotain näytölle aja se htmlspecialchars-funktion läpi.
Ok. Käytän postgres-kantaa, joten funktio lienee jokin muu?
Edit: luulisin: pg_escape_string()
Voisko joku putkalainen selittää mulle _SUOMEKSI_ näin lyhyesti että mitä tuo mysql_real_escape() tekee? :)
-Jos kysytte miksi, niin englannin tuntemukseni takia. =D
B_R_H kirjoitti:
Ok. Käytän postgres-kantaa, joten funktio lienee jokin muu?
Edit: luulisin: pg_escape_string()
Kyllä.
ankzilla kirjoitti:
Voisko joku putkalainen selittää mulle _SUOMEKSI_ näin lyhyesti että mitä tuo mysql_real_escape() tekee? :)
Lisää kenoviivat merkkien \x00, \n, \r, \, ', " ja \x1a eteen.
Eikös addslashes ole oletuksena?
Ainaskin joidenkin merkkien eteen tule automaagisesti \-viivat kuten '- ja "-merkkien ja kun kantaan syötetyn tekstin ottaa uudelleen editoitavaksi editointi lomakkeeseen ja tallentaa niin tilanne \" muutuu tilanteeksi \\" ja kohta on kilometri kenoviivoja.
Eli siis tuo
$muuttuja = mysql_real_escape_string($_POST['jotain']);
ja sit kun se tulostetaan mihin sitten tulostetaankaan niin teksti pistetään muotoon ettei niitä kenoviivoja sit ole tms.
En ihan itsekkään ole aina ollut tästä perillä ja joskus on tehty todella typeriä viritelmiä tai jätetty käyttämästä mm. Joomla Frameworkiä.
Se minua askaruttaa onko tuo tietoturva niin tärkeää jos kyseessä on salasanalla 100% varmuudella suojattu systeemi johon vain minulla on tunnukset? En varmaan nyt itse hakkeroi omaa systeemiä.
Blaze kirjoitti:
ankzilla kirjoitti:
Voisko joku putkalainen selittää mulle _SUOMEKSI_ näin lyhyesti että mitä tuo mysql_real_escape() tekee? :)
Lisää kenoviivat merkkien \x00, \n, \r, \, ', " ja \x1a eteen.
Tuo ei nyt ole aivan suomea niinkuin ankzlilla toivoi, mutta kyllähän sen tuostakin saa selvitettyä. :)
jo123 kirjoitti:
Blaze kirjoitti:
ankzilla kirjoitti:
Voisko joku putkalainen selittää mulle _SUOMEKSI_ näin lyhyesti että mitä tuo mysql_real_escape() tekee? :)
Lisää kenoviivat merkkien \x00, \n, \r, \, ', " ja \x1a eteen.
Tuo ei nyt ole aivan suomea niinkuin ankzlilla toivoi, mutta kyllähän sen tuostakin saa selvitettyä. :)
Eikös se funktio tee syöttelle sen että oma syötteinen SQL-lause ei toimi?
Se estääpi sen, että SQL-lauseeseen, ei voi ympätä lisää SQL:ää käyttäjän syötteestä. Esmes:
<?php $arvo = $_POST['arvo']; // tai miksei vaikka $_GET['arvo']; Tää on siis syöte mysql_select("select * from taulu where tietue = '$arvo'"); // Tälleen ei sitten ikinä saa tehdä!
Ok, nyt jos syöte on tämmönen: ' sql-syntaksi näyttäis tältä:
<?php mysql_select("select * from taulu where tietue = '''"); // tästä tulee tietysti virhe
Sitten jos syöte olis vaikka seuraavanlainen:
plaa'; drop table taulu; select from foo where bar = '
Hahaa, vähänkö keljua! Sinne meni kokonainen taulu! Hyvää luettavaa asiasta:
jo123 kirjoitti:
Tuo ei nyt ole aivan suomea niinkuin ankzlilla toivoi, mutta kyllähän sen tuostakin saa selvitettyä. :)
No mitäs kieltä se sitten oli. Onko suomessa jotain parempia keinoja ilmaista erikoismerkkejä?
Aihe on jo aika vanha, joten et voi enää vastata siihen.