SQL注入
@(Blog)[SQL注入]
SQL注入是一种将SQL代码添加到输入参数中,传递给SQL服务器解析并执行的一种攻击手法。
SQL注入的方式
- 数字注入
参数是一个永远成立的条件,该SQL会查询所有的用户。
select * from user where id=1 or 1=1; - 字符串注入
参数包含注释,注释之后的语句被忽略。
select * from user where user_name=’ james’# ’ AND password=’…..’;
select * from user where user_name=’ james’– ’ AND password=’…..’;
预防SQL注入
- 严格检查输入参数类型和格式
对于数字注入,检查输入参数是否是数字。
对于字符串注入,使用正则表达式判断。 - 过滤和转义特殊字符
转义特殊的字符 #, – - 预编译
在数据库预编译阶段,对查询参数做处理,最后替换?的内容。
select * from user where user_name=? and password=? ;