Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Scandit ja ääkköset

PHP-koodari [06.10.2014 18:49:25]

#

Rakenteilla olevilla sivuillani ja register.php sivu.
Kun käyttäjä täyttelee sinne tietojaan ne tallennetaan kantaan (mySQL).

Esim. nimi tallennetaan sarakkeeseen FULL_NAME ja sijainti sarakkeeseen CITY.
Ongelmana on se että jos käyttäjä syöttää nimen Mörkö se tallentuu näin Mörkö MUTTA jos kirjoitat kohtaan sijainti samaisen Mörkö se tallentuu kantaan (siihen samaan users tauluun) ihan niinkuin pitääki eli Mörkö:nä.

Tämä aiheuttaa ongelmia omatekoisen halustydeemin kanssa sillä se ei löydä taulukosta äätä eikä öötä joten hakusanat menevät hanurilleen.

En jaksa oikein ymmärtää...

Kaikkialla on UTF-8, olen kokeillut latin_swedish_c1 sun muuta ja kaikkea sekaisin mutta mikään ei auta.

Metabolix [06.10.2014 19:03:47]

#

Käytät selvästi väärässä paikassa funktiota htmlentities tai vastaavaa. Käyttäjän syötettä ei pidä käsitellä sellaisella ennen tallennusta vaan vasta tarvittaessa tulostusvaiheessa. Tietokantaan kuuluu yleensä tallentaa teksti suoraan sellaisena, kuin se on $_POST-taulukossa, ellei ole aivan erityistä syytä muokata tekstiä etukäteen.

Kuvauksestasi voi lisäksi aavistaa, että sijainti saattaa olla altis XSS-hyökkäykselle. Kokeilepa, mitä tapahtuu, jos syötät sijainniksi <script>alert("moi")</script> tai &quot;moi&quot;.

Siis: tallennusvaiheessa $_POST suoraan tietokantaan (toki turvallisesti PDO:lla tai sopivan escape-funktion kautta), hakuvaiheessa data htmlspecialchars-funktion läpi sivulle.

Vastaus

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

Tietoa sivustosta