Citat:
Originally posted by henkealf@Jun 4 2006, 22:32
Jag håller på att bygga en fiskesajt som ska lagra inte särskilt känsliga uppgifter i en MySQL-databas. Det här med SQL injections vill jag minnas kan ställa till både det ena och det andra i mySQL-databaser, och därför undrar jag nu;
Hur genomförs en SQL injection, kan en bandit lägga till SQL-kod i mitt inmatningsformulär som sedan ställer till besvär i databasen?
Vad kan SQL-injektioner ställa till med, kan de bara radera och förstöra eller även ta fram databasuppgifter åt banditen?
Finns det något idiotsäkert sätt att skydda sig mot sådana? T ex begränsa antalet tecken i inmatningsformuläret, göra om alla " till \", eller något annat?
Tack!
/Henke
|
SQL-injections kan ställa till med olika saker beroende på vad den konfigurerade databasanvändaren i applikationen kan göra. Låt oss säga att du har en applikation som använder "root"-användaren. Då kan en SQL-injection visa ditt data, radera ditt data, skriva fil till filsystemet som samma användare som mysql körs, och sist men inte minst göra din mysql-server totalt obrukbar.
Ett bra sätt är ju att alltid tillåta endast maximalt nödvändiga rättigheter. Exempelvis om du har en applikation som består av en vanlig webbsida och ett CMS. Då är det bra ifall den db-användaren som används för att presentera webbsidan endast har läsrättigheter till databasen, medans db-användaren som används i CMS-et måste också ha skrivrättigheter.
Generellt sett används SQL-injections för att ta reda på användarnamn och lösenord till olika delar av webbsiten eller ändra innehåll.