Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: lomakkeelta tietokantaan turvallisesti

Sivun loppuun

B_R_H [28.09.2009 15:44:34]

#

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']))

Blaze [28.09.2009 15:53:42]

#

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.

B_R_H [28.09.2009 16:19:25]

#

Ok. Käytän postgres-kantaa, joten funktio lienee jokin muu?

Edit: luulisin: pg_escape_string()

ankzilla [28.09.2009 16:23:45]

#

Voisko joku putkalainen selittää mulle _SUOMEKSI_ näin lyhyesti että mitä tuo mysql_real_escape() tekee? :)
-Jos kysytte miksi, niin englannin tuntemukseni takia. =D

Blaze [28.09.2009 16:36:08]

#

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.

walkout_ [28.09.2009 17:17:25]

#

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ä.

jo123 [28.09.2009 23:45:02]

#

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ä. :)

walkout_ [29.09.2009 15:29:38]

#

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?

Triskal [29.09.2009 16:07:32]

#

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:

http://unixwiz.net/techtips/sql-injection.html

Grez [29.09.2009 16:14:38]

#

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ä?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta