Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Merkkien karsiminen ennen lisäämistä

Pallo [13.04.2008 12:42:12]

#

Olen nyt päässyt alkuun php rekistöröintiskriptinin kanssa jossa lisään tunnuksen
ja muut tiedot tietokantaan.

$tunnus = $_POST['tunnus'];

Onko turvallista antaa käyttäjän käyttää kaikenlaisia merkkejä tunnuksessa, vai
pitääkö karsia jotain vaarallisia merkkejä ennen tietokantaan lisäämistä?
En ole joutunut ennen tietokantaan lisäämään mitään tietoa joten valaiskaahan vähäsen.

Antti Laaksonen [13.04.2008 13:06:47]

#

Tietokantaan tallennettavassa merkkijonossa voi olla mitä tahansa merkkejä, mutta muutama asia täytyy ottaa huomioon.

Ensinnäkin heittomerkkejä sisältävää merkkijonoa ei voi yhdistää suoraan SQL-lauseeseen. Muuten tietokanta kuvittelee merkkijonossa olevan heittomerkin tarkoittavan merkkijonon loppumista.

MySQL-tietokannassa heittomerkkien eteen täytyy lisätä kenoviivoja. Tämä onnistuu esim. PHP:n funktiolla mysql_escape_string.

Lisäksi jos tunnuksessa voi olla mitä tahansa merkkejä, tulostusvaiheessa täytyy huolehtia, että merkkejä ei tulkita HTML-komennoksi. Tähän soveltuu esim. PHP:n funktio htmlspecialchars, joka muuttaa mm. merkin < muotoon &lt; ja merkin > muotoon &gt;.

tsuriga [13.04.2008 13:53:46]

#

mysql_real_escape_string. Ja aina voi (ja olisi suotavaa?) käyttää preparoituja lausekkeita. Onko niin, että mikäli kantaan hyväksytään mitä tahansa (ja tulostetaan prosessoimattomana [poislukien nyt normaalit htmlspecialit]), sekaan voi ujuttaa hauskan hauskoja kontrollimerkkejä, joilla saadaan esimerkiksi käännettyä teksti ylösalaisin / päinvastaiseksi? Auttaisikohan tuohon sitten Filter-lisäosa...

Vastaus

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

Tietoa sivustosta