sql注入的防护

Posted S1lenc3

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql注入的防护相关的知识,希望对你有一定的参考价值。

一、严格的数据类型

在Java,C#等高级语言中,几乎不存在数字类型注入,而对于php,ASP等弱类型语言,就存在了危险。

防御数字型注入相对简单,如果不需要输入字符型数据,则可以用is_numeric()、ctype_digit()等函数判断数据类型。

二、特殊字符转义

字符型注入一般需要单引号闭合,首先想到的应对方法,就是字符转义。

在PHP中可用addslashes()函数进行转义字符,可以将单双引号、反斜线及NULL加上反斜线转义。还可以通过过滤关键字,如:select,union select , order by ,information, table,等等。

在特殊字符转义时,还有另一种更加难以防范的sql注入:二次注入攻击。

我们写入数据  admin‘,会变成  admin‘,但是在插入的数据库时是不带有反斜杠的, 也就是说数据库中的数据还是  admin‘,这样的话,如果这个网站有另一个地方查询这个字段的内容,就造成了二次注入攻击。

三、使用预编译语句

预编译技术可以有效的防御sql注入,我开发是个弱鸡,就不细细讲解了。

采用预编译技术要注意,不要使用动态拼接sql语句。

简单来说,动态拼接语句就是字符串连接变量的意思,如:

变量="select.......where id = "+变量;

总之,在存在sql语句的代码中,一定要谨慎,最好不要用动态拼接SQL语句。

 

以上是关于sql注入的防护的主要内容,如果未能解决你的问题,请参考以下文章

Oracle数据库SQL注入浅析与防护建议

SQL注入攻击方式及防护

浅谈Web安全之SQL注入攻击与防护

sql注入的防护

网站代码sql注入攻击漏洞修复加固防护措施

那些年我们一起挖掘SQL注入 - 5.全局防护Bypass之宽字节注入