一个防止SQL注入的函数
在网上搜索了半天,搜出来的代码不是检测到sql关键字提示用户改就是直接替换SQL关键字,而且有很多代码还没有注意到关键字大小写问题。所以代码多少有写缺陷和不完美。
后来自己想到将所有代码编码成utf8或其他编码,现实的时候再解码,但是这样的处理量十分大。可用程度不高。后来忽然想到网页显示的时候常常将空格用“ ”代替。这样一来,本来一条正常的SQL语句“select ns_title from news”就变成“select ns_title from news”了,立马想到替换SQL语句中的分隔符不是比替换关键字有效得多吗?而且对显示没有影响。所以有了一下的一个简单的函数:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
暂时发现SQL语句的分隔符只有空格、\t、\n三个,如果发现更多,只要增加一个Replace语句就可用很好地工作了。当然用正则表达式替换更好,但是函数语句太简单了,相信效率相差不是很大。
但是为什么大伙都不用这个办法呢?没有想到吗?还是别的什么原因?呵呵,希望你知道告诉我!