一般我们提交的表单数据都会通过 SQL 语句执行查询。例如:SELECT * FROM users WHERE id='1'
,其中 id 参数 1 就是从表单中传过来的数据。如果用户传的参数不是 1,而是一条 SQL 语句,那么就可能骗过了 SQL 数据库,从而执行了一段恶意的代码,达到了黑客的攻击目的。例如用户可以将表单中的查询参数改为delete from users where =1
,那么数据库将执行如下 SQL:SELECT * FROM users WHERE id='delete from users where =1'
。这也是黑客窃取用户账号、密码,甚至个人证件信息常见方式。
图片来源于 xkcd 漫画