![]() |
Hej!
Jag har en liten kort fråga. Jag har läst rätt mycket om tekniker att STOPPA SQL injections, och har kommit på ett "bra" sätt att stoppa det, TROR jag? Sättet är lätt att infoga i redan existerande kod och är rätt simpelt. Frågan är nu bara om det fungerar i praktiken med? Vanligaste sättet att stoppa sql injections (som jag sett) är genom att köra detta: Kod:
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'", Därför kom jag på ett annat alternativ, eftersom det är variablarna som kommer genom $_POST och $_GET som ska escapas, borde inte detta funka 100ggr bättre? Kod:
// denna funktion placeras i en extern functions.php fil. Kommer det fungera BRA? och är det tillräckligt säkert? Varför använder alla den andra "tekniken" igentligen? Hjälp mig! mvh Jim |
Dina varianter gör ju samma sak, bara två olika skrivsätt.
|
Citat:
|
Tack för svaren!
Så båda borde alltså fungera lika bra? =) mvh Jim |
Citat:
|
I form av prestanda och belastning då?
mvh Jim |
Ingen skillnad, PHP-interpretern kommer tolka din kod och därmed också praktiskt ersätta (blir ju pekare till slut)varenda e($_POST['variabel']); med mysql_real_escape_string($_POST['variabel']);
Interpretern kommer inte att snurra några extravarv funktionsmässigt, funktionen är mer en estetisk grej för dig som programmerare. |
Båda varianterna blir ju lite jobbiga om det är mer än bara user och password. Går det i PHP att
skriva någon generell funktion som loopar igenom alla POST-variabler och gör om dem? Jag kan inte PHP, men tänkte mig alltså något i stil med... Kod:
function mysql_real_escape_POST() { där det behövs. Kanske går att konfigurera så att den anropas automatiskt till och med. Någon som kan PHP får gärna rätta till detta exempel. Sen vill man väl i vissa fall ge ett tydligt felmeddelande istället för att exekvera SQL-satsen om någon skickar otillåtna tecken. Detta bör i så fall göras på både serversidan och klientsidan. |
Ta en titt på MySQLi och Prepared Statements, mycket säkrare.
|
Citat:
Kod:
if (get_magic_quotes_gpc()) { |
Alla tider är GMT +2. Klockan är nu 05:53. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson