简单地避免SQL注入式攻击

作者:Carl Zhang | 更新时间:2017-04-17 | 分类:科技

大早上起来就收到周同学(他的博客:MikeTech)的微信说我的站内搜索存在漏洞,可以被注入式攻击,幸好他不知道我的数据库表名,不然能把我数据库给清空了笑哭,于是就赶紧来处理下这个问题。(P.S.:其实这个问题我早就知道了,只不过是当时没时间修,后来就忘了捂脸。)

什么是SQL注入,这是周同学对于我这个问题写的一篇博客,讲述了一些关于SQL注入的问题。这里我就简单的写一下我怎么修复的这个问题:

这是一段来自“MySQL 及 SQL 注入 | 菜鸟教程”的描述:

SQL防止注入

看上方代码片中,多了一行代码:“$keyword=mysql_real_escape_string($keyword, $link);”。这行代码的目的是用来转义特殊字符的,具体可以查看W3Cschool的文档:PHP mysql_real_escape_string() 函数。加了这一行代码以后,周同学博客中提出的这些注入式攻击都被化解了。当然,这行代码还是有漏洞的,如果黑客想要攻击还是可以绕开的。具体可看:PHP防SQL注入不要再用addslashes和mysql_real_escape_string了

其实现在来说,PHP 5.5以上的版本都是不建议使用mysql的,而是用mysqli来代替,甚至都已经禁止使用mysql_query语句了。不过由于我这个就是一个简单的搜索功能,数据库里也没有太大的有价值/隐私之类的东西,也没有用户名密码需要存储,所以就不管他了。至于更多教程网站上提出的使用“magic_quotes_gpc”,这个在PHP 5.3的时候就已经废止了,在PHP 5.4的时候就彻底移除了,所以就不要再考虑用这个了,就算你用的是更老版本的PHP也建议关掉这个功能。

(本文为作者原创。转载请注明:转自carlzhang.net