SQL注入
单引号问题
输入内容含单引号导致sql错误。此单引号可能是用户特意输入,也可能是微软输入法拼汉字过程产物。如下图:
原因
在sql语句中,单引号是特殊字符,字符串参数会被单引号包裹。
如果采用字符串拼接sql语句,那么在拼接过程中,内容中的单引号也会被特殊解析。
解决
replace转义。因为sql中,用两个单引号,表示一个不是字符边界的单引号,因此传入字符串的时候,将单引号用replace方法替换成两个单引号,结果不变,报错取消。
占位符代替变量。如java中的
?
,c#中的@
,mybatis中#{ }
被解析为一个参数占位符?
,${ }
仅仅为一个纯碎的 string 替换。
参考
MySql默认查询不区分大小
- BINARY 表示敏感
1 | CREATE TABLE NAME( |
1 | SELECT * FROM TABLE NAME WHERE BINARY name='Clip'; |
- 设置字符集
utf8_general_ci –不区分大小写
utf8_bin–区分大小写