Bobby Taulukot: opas estää SQL-injektio
Miksi Bobby”s school menetä kirjaa?
koulu ilmeisesti tallentaa nimiä niiden opiskelijoiden taulukkoon nimeltä Opiskelijat. Kun uusi oppilas saapuu, koulu lisää hänen nimensä tähän pöytään. Koodi tekee lisäys voisi näyttää seuraavasti:
ensimmäinen rivi luo merkkijono, joka sisältää SQL INSERT selvitys. $studentName
muuttujan sisältö liimataan SQL-lausekkeeseen., Toinen rivi lähettää tuloksena olevan SQL-lausuman tietokantaan. Sudenkuoppa tämä koodi on, että ulkopuolinen data, tässä tapauksessa sisällön $studentName
tulee osaksi SQL-lause.
Ensimmäinen, let”s nähdä, mitä SQL-lause näyttää, jos emme aseta opiskelija nimeltä John:
Tämä tekee täsmälleen mitä haluamme: se lisää John osaksi Opiskelijat taulukko.
Nyt meillä on lisää pikku Bobby Taulukot, asettamalla $studentName
ja Robert"); DROP TABLE Students;--
., SQL tulee:
Tämä lisää Robert osaksi Opiskelijat taulukko. Insertti-lausumaa seuraa kuitenkin nyt PUDOTUSPÖYTÄLAUSUNTO, joka poistaa koko Opiskelijapöydän. Auts!
Miten välttää Bobby Taulukot
Siellä on vain yksi tapa välttää Bobby Taulukot hyökkäyksiä
- Älä luo SQL-lauseet, jotka sisältävät ulkopuolella tiedot.
- käytä parametroituja SQL-puheluita.
että ” s it. Älä yritä paeta invalideja hahmoja. Älä yritä tehdä sitä itse. Opi käyttämään parametrisoituja lausuntoja. Aina, joka ikinen kerta.,
the strip gets one thing crucial wrong. Vastaus ei ole ”puhdistaa tietokantapanoksia” itse. Se on altis virheille.