SQL injectie hacks worden uitgevoerd op servers die niet beschikken over de noodzakelijke veilig programmeren . Deze worden meestal uitgevoerd op de servers waar de web - pagina -code maakt gebruik van inline SQL , wat betekent dat de query is in de web - pagina -code in plaats van zich in een opgeslagen procedure . Weten hoe een SQL-injectie hack werkt helpt eigenaren van websites te beschermen van klantgegevens en het beveiligen van de webpagina's . De Formuliervariabele
De eerste stap in het begrijpen hoe een SQL injectieaanval wordt gecreëerd is door het repliceren van het probleem . SQL- injectie aanvallen worden bereikt door middel van formulier variabelen in een HTML-pagina . Het creëren van het formulier kan de webmaster te simuleren en testen van de beveiliging van de webserver . Hieronder is een voorbeeld van een formulier -object gebruikt om een SQL- injectie aanval te creëren .
Hoewel dit een eenvoudige vorm textbox , het is alles wat nodig is om een SQL- injectie te bereiken . The Hacker code
Wanneer SQL statements worden gedaan , de applicatie bouwt SQL- code die wordt verzonden naar de database . Wanneer een string wordt verzonden naar de database , de code ziet er ongeveer als de onderstaande tekst :
select * van myTable waarbij naam = ' myVariableFromtheForm '
Het vinkje betekent het einde van de SQL-code , en dit is waar hackers doelwit . Wanneer een tekstvak als degene die in hoofdstuk 1 wordt gebruikt om een string te bouwen , kan een hacker zoiets als het volgende in te voeren in het tekstvak :
' of 1 = 1 ; -
zou kunnen zien als wartaal , maar in feite is het injecteert code in de database die wordt beheerd door de server . Wanneer " myVariableFromtheForm " wordt vervangen door de bovenstaande code , de verklaring die door de server daadwerkelijk uitziet de volgende :
select * from myTable waarbij naam = '' of 1 = 1 - '
de " - " is het commentaar code voor SQL -server , zodat de laatste beëindiging teek wordt genegeerd . De string is leeg en de hacker injecteert de code " 1 = 1 " in de verklaring . Wat dat doet is terug elke rij van de tabel naar de hacker . Dit is hoe een gewetenloze persoon prive-informatie uit de database servers steelt . Vaststelling van het probleem
De beste manier om het probleem in de code die gevoelig is voor repareren een SQL- injectie hack is om de functie " Replace " te gebruiken in elk geval waar de tekst wordt ingevoerd van gebruikers . Bijvoorbeeld, in ASP-code , de volgende regel code vervangt de enkelvoudige vinkje met twee . Wanneer een SQL Server draait code met twee maatstreepjes , leest ze als een letterlijke en de string is niet beëindigd
String.Replace ( " ' " , " '' ' ) ; .
de bovenstaande code vervangt alle gevallen van een enkel vinkje met twee , het verwijderen van de kwetsbaarheid van een SQL- injectie aanval .