Vierailijalla on mahdollisuus lisätä oma viesti sivulle.
Mitä kaikkea pitäisi ottaa huomioon, kun käyttäjän teksti lisätään sivulle? Esim poistaa html-tagit? Mitä vielä?
Mikä on helpoin tapa tehdä se?
Mitä kaikkea pitäisi ottaa huomioon, kun käyttäjän teksti lisätään sivulle? Esim poistaa html-tagit? Mitä vielä?
Mikä on helpoin tapa tehdä se?
Vastaukset 3
Vanhimmat
Jos lisäät tekstitiedostoon, niin html () merkit muuttaa koodikieles tai joskin (oli sillä hieno nimikin joku entryteetti tai jotain, viisaampi kertokoon)
Muuta ei tartte poistaa, paitsi jos käytät jotain tiettyä merkkiä viestin erottimena, niin sekin pitää poistaa.
1|viesti
2|viesti
tossa tapauksessa | merkkit pois.
Uudenvuoden kunniaksi saat pienen toimivan esimerkin
Poista tosta FILE_APPEND jos haluat, että uusi viesti korvaa vanhan.
Tohon lähetät viestit normaalilla post formilla (viesti känttä tallentuu esimerkis)
Entiteetti.
Poista ehdottomasti myös mahdollisuus kirjoittaa SQL-lauseita. Tuolle taisi olla jokin oma funktio PHP:ssä. Laiska voisi korvata html-muotoilusta vaikkapa sulut entiteetillä.
Kiitoksia, muistin sentään sinnepäin ;)
On sille oma functio vaikkapa http://fi.php.net/mysql_escape_string jos mysliä käyttelee muillekkin kannoille löytyy oma, ei sulkuja tarvitse korvata (eikä sulkujen korvaaminen/poistaminen edes riitä tekemään kyselystä turvallista), mikäli syötteen laittaa '' merkkien väliin ja käyttää tota aikasempaa functiota, niin käyttäjä ei pääse tekemään alikyselyitä eikä muutakaan pahaa tietokantaan, mikäli koodi ei sitä muualta mahdollista.
Yleisempia virheitä on, ettei käyttäjän syötettä tarkisteta ollenkaan, vaan oletetaan sen olevan halutunlaista, jos tarvitaan numeroita, niin silloin tarkistetaan, että syöte on vain numeroita jne...
Esim poistamis kyselyssä pääsee tuhomaan tiedot, mikäli se on tyyliä ....... WHERE id = $_GET['id']
Tossa ei edes auta toi aikasemmin mainittu functiokaan, sillä tohon voi syöttää 1 and id > 1 jolloin kannasta poistetaankin kaikki.
...WHERE id = intval($_GET['id']) on sitävastoin turvallinen, kun toi hyväksyy vain numeroita (korvaa muutkuin numerot nollalla), varmuuden vuoksi kannattaa lisätä LIMIT 1 jolloin kerralla voi poistaa vain yhden, mikäli ei useampia tarvitse poistaa.