Det skulle det om du inte inkluderar enstaka citattecken i det postade name
, vilket gör att du kan bryta dig ur citattecken. Exempel, posta namnet som:
' or 1 or '
WHERE-satsen blir:
WHERE id = '' or 1 or '';
Detta skulle matcha och hämta alla rader i tabellen på grund av or 1
del. Som du kan se bryter den ut ur citattecken för att injicera lite SQL, sedan går den tillbaka till citattecken för att göra frågan giltig.
Nej, men om det kördes med mysqli_multi_query
då ja, du kan lägga till flera frågor till slutet.
Generellt sett ja, men ett förberett uttalande skulle vara bättre. Med escaping, WHERE
klausul skulle bli (med mitt exempel ovan):
WHERE id = '\' or 1 or \'';
Detta är inte längre sårbart eftersom citattecken inte kan brytas ur, och skulle bara matcha rader om name
matchar bokstavligen ' or 1 or '
vilket uppenbarligen är osannolikt.