Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL-kysely turvalliseksi

Hoover [09.05.2007 19:56:46]

#

Elikkäs, mitä temppuja sitä kannattaisi PHP:ssä tehdä kyselylle aina ennen kuin se suoritetaan?

Esim. ennen tälläisiä rivejä:

$_POST['login']
$query = "SELECT * FROM user WHERE login = '$login'";
mysql_query($query);

Lähinnä sen takia rupesin tuota tutkimaan, kun jos kuvitellaan tilanne, että sivuilla on jokin kirjautumissivu, niin niihin käyttäjätunnuskenttiinhän voisi joku kirjoittaa vaikka SQL-lauseen joka pyyhkii koko tietokannan tai tekee jotain muuta kieroa.

kayttaja-2791 [09.05.2007 20:11:44]

#

Ottaa magic quotesit pois käytöstä, ja ajaa kaikki kyselyihin menevä mysql_real_escape-funktion lävitse. Eipä kai siinä erityisemmin muuta tarvitse.

Yhtään hullumpi idea ei myöskään ole tehdä oma kyselyfunktio, joka tekee kaiken tuon aina automaattisesti.

tkarkkainen [09.05.2007 20:13:30]

#

Yllä olevassa tapauksessa funktio mysql_real_escape_string() on pelastaja. Siis

$login = mysql_real_escape_string($_POST['login']);

ajv [09.05.2007 20:14:38]

#

http://wiki.mureakuha.com/wiki/SQL-injektio
Eli PHP:n tapauksessa merkkijonot täytyy ajaa mysql_real_escape_string()-funktion läpi.

Ohhoh, olinpas hidas :)

Edit: Kaivappa muuten tältä sivulta klo 11:22:34 lähettämäni viesti, siinä aika tyhjentävästi selitetty noista käyttäjän antamien syötteiden tarkistuksista.

Hoover [09.05.2007 20:30:01]

#

Mitäs nämä "magic quotesit" oikein on? Katselin vähän tutoriaaleja tuon mysql_real_escape_string()-funktion käytöstä ja kaikissa viitattiin siihen. ;)

Antti Laaksonen [09.05.2007 21:18:48]

#

Kyseessä on PHP:n asetus, jonka ollessa käytössä skriptille (esim. lomakkeesta) tuleviin muuttujiin lisätään automaattisesti tarvittavat kenoviivat. Lisää tietoa aiheesta on PHP:n ohjeessa, jossa myös neuvotaan olemaan käyttämättä tätä ominaisuutta ja lisäämään kenoviivat tarvittaessa itse. Kunnollista perustelua tälle ei kylläkään mainita, mutta ongelmia tulee joka tapauksessa siitä, että eri palvelimilla asetus on eri asennossa. Kumpikaan tilanne ei ole kovin hyvä, sillä kenoviivoja saa aina olla joko lisäämässä tai poistamassa.

Vastaus

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

Tietoa sivustosta