前言
前面介绍的很多中注入的方法,那么很多人在想既然有这么多的注入方法,那么是不是整个系统内的网站就没有什么可以防范的方法了呢?当然不是,我们在本小节将会为大家介绍一些常见的防止注入的方法。
想要更好的防止SQL注入攻击,就必须清楚一个概念:数据库只负责执行SQL语句,根据SQL语句来返回相关的数据。数据库并没有什么好的办法直接过滤SQL注入,哪怕是存储过程也不例外。了解这一点之后,我们应该要明白要防止SQL注入其实还得存代码入手。
严格的数据类型
Java 、C++等强类型语言几乎可以完全忽略数字型注入,而对于PHP等弱类型语言来说存在数字型注入的可能性就非常大了,但是我们还是可以通过严格的判断数据类型来进行防范。
特殊字符转义
攻击者在利用SQL注入时往往会尝试构造SQL注入语句,我们可以通过过滤常用的SQL语句中的一些关键词、关键符号等来防止这类注入的利用。
使用预编译语句
像JAVA、C#这些语言都提供了预编译语句,例如Statement、PreparedStatement这些语句都可以进行预编译处理
使用框架
对于JSP、PHP等我们可以是哟相关的技术类框架来提高安全性,但是也不能全部依靠框架,自己在编码的过程中也要注意diam的安全性。
输入验证
凡是存在输入的地方皆可能存在风险,所以每当我们面对用户的输入操作是我们需要进行严格的过滤措施。
面对用户的输入我们有两种不同类型的验证输入方法:白名单和黑名单!
白名单:只允许在该名单内的用户(或者其他凭据信息)通过验证进行登录或者操作。
黑名单:对该名单内的用户名或者IP地址进行封杀,不允许其进行任何操作。
输出编码
我们除了要验证应用程序收到的输入以外,还要对数据进行编码,这样不仅可以防御SQL注入攻击,还能防止出现其他问题,比如XSS。
使用安全函数
为了提高安全性不少的编程语言都有相应的安全函数,我们可以通过使用这些安全函数来提高系统的安全性!
总之,没有绝对的安全,安全是相对的!