I stället för att sno någon annans tråd, lyfter jag ut frågeställningen till en egen...
colione i denna andra tråd skrev:
aasah i annan tråd skrev:
Om du skriver länken via en form, så är det säkert PHP:s magical_quotes_gpc som spökar. När denna är på (default) ser den till att skydda för elakt input från illvilliga användare. Visst löser fiddlers funktion problemet, men ev lite för bra. För du blir samtidigt av med skyddet för SQL Injections. :o
... men att förlita sig på mqg för att skydda sig från sql-injection är som att använda gladpack som kondom. Är inte mqg avstängt på din host som default bör du själv försöka stänga av det.
Vad gäller förlitandet på... Hm?
function secureFromForm($val) {
if (!get_magic_quotes_gpc())
return addslashes($val);
else return $val;
}
Räcker inte detta? I så fall varför och hur gör man istället?
För att addslashes inte escapear all inkommande data säkert om den ska till mysql. Addslashes escapear bara ' " \ och NULL (0x1A) med ett backslash. Det finns andra vitala tecken i mysql som kan behöva escapeas som vagnretur, ny rad och kontrolltecken. Därför ska du inte förlita dig på addslashes som en säker metod för alla databaser.
Du ska istället använda den för din databas anpassade escapening och gärna den senaste versionen av det (alltså bättre att använda mysqli_* istället för mysql_*) eller helst av allt något som stöder prepared statements (PDO eller mysqli_* om du inte orkar sätta dig in i PDO). En liten brasklapp är att real_escape_string inte skyddar helt heller den missar att escapea tecken lite beroende på teckenkod och locale.
PDO är et grännssnitt för att kommunicera med det flesta databaser på samma sätt så att det bl.a blir lättare att skriva portabel kod. mysql-funktionerna funkar inte så där jättekanon mot en postgre-databas. Det finns en hel del skrivet om det här på wF även IBM och netevil.org har artiklar om det.
En liten sidofråga bara...
Är det säkert att ditt webhotell inte kommer att uppgradera till 5:an.
Nu har all utveckling av 4:an stoppats och säkerhetsfixandet kommer det också vara stopp på i aug nästa år, och 6:an är på gång.
PDO eller mysqli är säkert men jag har sett att t.ex högskolor fortfarande lär ut sådant som detta.
Ur fysikums kurs... uppdateras dagligen...
mysqli_ (där det extra i:et lär betyda någondera av improved, interface, ingenious, incompatible eller incomplete; jag skulle vilja lägga till irriterande och idiotiskt för att beskriva den situation vi PHP-kodare försätts i när vi nu måste lära oss två olika uppsättningar databasfunktioner).
PDO nämns inte...
Något man knappt kan tro är sant att detta lärs ut i dag.
Men jag är ju så mycket nybörjare själv så jag ska väl inte säga för mycket... :-)
Men kolla med webhotellet... innan du fixar för mycket i det gamla... :)
132 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5