备忘:进一步强化SQL执行前的检查

之前在某处提过一嘴, 我已经在框架层面提供了依靠bin2hex-unhex实现的防注入机制。 如果全项目都能落实到位, 100%没有被注入的风险。

当然如何你能全项目使用预编译的SQL的方式,那可以直接不用看下文了。

我这是在处理一个历史项目。没有精力做到全项目清理一次。

今天又研究了一下网上讨论的注入方式, 打算进一步的强化检查。

先写写,备忘。

if(substr_count($sql,"@")>=3){ echo "此SQL不安全,需要改造。";}

if(substr_count($sql,'\')>=3){ echo "此SQL不安全,需要改造。";}

if(substr_count($sql,"$")>=3){ echo "此SQL不安全,需要改造。";}

if(substr_count($sql,"/*")>=3){ echo "此SQL不安全,需要改造。";}

if(substr_count($sql,"&")>=3){ echo "此SQL不安全,需要改造。";}

if(substr_count($sql,"%")>=3){ echo "此SQL不安全,需要改造。";} 

if(substr_count($sql,"#")>=3){ echo "此SQL不安全,需要改造。";}

if(substr_count(strtolower($sql),"#")>0){ echo "此SQL不安全,需要改造。";}

 基本上就是把特殊字符直接掐死光。(union 啥的之前的版本已经完成检查了)

 

经过这个强制,一旦测试中出现报错,则可以找到相应的代码改为hex-unhex的方式。

 

有待实现,有待验证。。。。

 

posted on 2019-10-31 21:39  kalamansi  阅读(204)  评论(0编辑  收藏  举报

导航