Bobby Tables: en guide för att förhindra SQL-injektion

0 Comments

varför förlorade Bobby ’ s school sina poster?

skolan lagrar tydligen namnen på sina elever i ett bord som heter studenter. När en ny student anländer sätter skolan sitt namn i denna tabell. Koden som gör infogningen kan se ut som följer:

den första raden skapar en sträng som innehåller en SQL INSERT-sats. Innehållet i variabeln $studentName är limt i SQL-satsen., Den andra raden skickar den resulterande SQL-satsen till databasen. Fallgropen för denna kod är att utanför data, i detta fall innehållet i $studentName, blir en del av SQL-satsen.

låt oss först se hur SQL-satsen ser ut om vi sätter in en student som heter John:

det gör precis vad vi vill: det infogar John i elevernas tabell.

nu sätter vi in Little Bobby-tabeller genom att ställa in $studentName till Robert"); DROP TABLE Students;--., SQL-satsen blir:

detta infogar Robert i tabellen studenter. Satsen infoga följs emellertid nu av en DROPPTABELL som tar bort hela elevernas tabell. Aj!

hur man undviker Bobby tabeller

det finns bara ett sätt att undvika Bobby tabeller attacker

  • skapa inte SQL-satser som innehåller externa data.
  • använd parametriserade SQL-samtal.

det är det. Försök inte fly ogiltiga tecken. Försök inte göra det själv. Lär dig hur du använder parametriserade uttalanden. Alltid, varenda gång.,

remsan får en sak avgörande fel. Svaret är inte att” sanera dina databasingångar ” själv. Det är benäget att fel.


Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *