En SQL-injektion riktar sig till interaktiva webbapplikationer som använder databastjänster. Sådana program accepterar användarinmatning, såsom formulärfält, och sedan inkludera denna indata i databasförfrågningar, typiskt SQL uttalanden. Vid SQL-injektion ger angriparen användarinmatning som resulterar i en annan databasförfrågan än vad som var tänkt av applikationsprogrammet. Det vill säga, tolkningen av användarens inmatning som en del av en större SQL uttalande, resulterar i en SQL uttalande av en annan form än vad som ursprungligen var tänkt. Vi beskriver en teknik för att förhindra denna typ av manipulation och därmed eliminera SQL-injektionssårbarheter. Tekniken bygger på att man vid körning jämför parsträdet i SQL-uttalandet innan användarens inmatning inkluderas med det som resulterar i att inmatningen inkluderas. Vår lösning är effektiv, lägger till cirka 3 ms overhead till databasförfrågan kostnader. Dessutom är det lätt antas av programprogrammerare, med samma syntaktiska struktur som nuvarande populära rekorduppsättning hämtningsmetoder. För empirisk analys tillhandahåller vi en fallstudie av vår lösning i J2EE. Vi implementerar vår lösning i en enkel statisk Javaklass och visar dess effektivitet och skalbarhet.
I REF föreslås att man upptäcker SQL-injektioner genom att jämföra ett fingeravtryck innan användarens inmatning inkluderas med det som blir resultatet efter införandet av indata.
Using parse tree validation to prevent SQL injection attacks
{'venue': "SEM '05", 'journal': None, 'mag_field_of_study': ['Computer Science']}