注射可以在任何SQL语句中都无法正常运行。
例如,让我们假装您的评论表有两个字段,一个整数ID和注释字符串。所以你会的INSERT
如下:
INSERT INTO COMMENTS VALUES(122,'I like this website');
考虑某人输入以下评论:
'); DELETE FROM users; --
如果您只是将注释字符串放入SQL而不进行任何处理的情况下,这可能会使您的单曲转动INSERT
在以下两个陈述中,然后发表评论:
INSERT INTO COMMENTS VALUES(123,''); DELETE FROM users; -- ');
这将删除您的所有内容users
桌子。而且人们愿意整天使用反复试验和各种技巧来寻找合适的列表来空着。这是您如何执行SQL注入攻击的描述。
您需要使用参数化的SQL语句来防止这种情况。
这不仅是出于安全原因。例如,如果您正在创建SQL语句,则以下评论:
I'm just loving this website
由于SQL被解释为闭合报价,因此会导致SQL语法误差。