公司项目,我使用的sql拼接,不是?预编译的sql,就会产生sql注入漏洞!
由于我司最近在进行安全防护,因此我的垃圾项目就被检测出这种问题了,
没有错,sql注入高危漏洞,!
乍一听,之前学习的知识:如何防止sql注入,终于学有所用了!
什么是sql注入
如何防止sql注入?
严格使用SQL语句预编译处理,禁止使用SQL拼接
我的sql拼接代码示例
由于查询需要多条件,因此我将查询条件全部都拼接了,而且是直接拼接的那种,这就是一种sql的拼接,没有使用预编译的sql!!这种就会使得入参被随意串改,会损坏数据库的,但是如果使用占位符的话,这个sql就是预编译的,就不会产生sql注入
因此会产生sql注入的高危漏洞
为什么预编译的sql可以防止sql注入
解决的方案自然是,用户可以随意拼接sql,但是他拼接的sql会不会被mysql执行,如果是预编译的sql即使进行了sql拼接,mysql也不会把拼接的部分作为命令执行,而是将其作为一个参数。但是如果不是预编译的sql,那么mysql自然会执行了。
好吧,看到这我就要去处理我所有的sql注入漏洞了,处理方法:mysql.escape(sql拼接的参数)或者使用预编译sql!
经过我一天的深思熟虑,我打算要把项目里所有的sql翻一个底朝天,都给他改过来,让他由sql拼接,彻底变成预编译sql