PHP开发中有效防御SQL注入攻击有哪些好方法?

网友解答: 方法有很多,网上的参考例子也比较多,建议从以下几个方面进行:一、使用好的php框架例如目前流行的thinkphp等框架等,已经考虑了这些方面问题,直接应用肯定会比自己写的代码

网友解答:

方法有很多,网上的参考例子也比较多,建议从以下几个方面进行:

一、使用好的php框架

例如目前流行的thinkphp等框架等,已经考虑了这些方面问题,直接应用肯定会比自己写的代码防注入性要强一些,毕竟每个人的水平参差不齐,总有遗漏的地方。

二、每个页面对输入的值进行过滤和校验

这个工作量会比较大,就是验证一下输入的值是否符合要求,比如一个数字参数,传了一些古怪字符进来,都是要过滤的。php里面也有参数设置对get,post值进行处理,去掉分隔符等。

三、服务器托管

最好选择如腾讯云,阿里云这些服务器,相对比自己去其他小机房托管,本身就可以帮阻止一些不必要的攻击了。

四、服务器运行权限

这里有2个地方:

1、设置使用非root用户来运行你的php,防止php拥有太多的执行服务器指令的机会。

2、对于php中,能够上传文件的php程序,以及上传的文件,要进行专门验证,不要让别人有利用这个入口上传木马后台程序的机会。

五、扫描工具

上传程序到服务器以后,可以用例如360的漏洞扫描工具,扫描一下网站,看看有没有明显的漏洞。

希望以上思路可以对大家有所参考和帮助!

-------------------------------------------

本人从事信息系统、互联网、各种应用架构设计开发20年,目前专注于股票期货程序化交易,AI机器学习领域,欢迎交流。

网友解答:

这个问题感觉对一个多年开发人员来说应该还是比较有资格回答的,毕竟录制过sql注入以及防御的课程。


搞明白sql注入

注入攻击漏洞例如SQL,OS以及LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。

然后给大家看看经常会引起sql注入的sql语句

1'or 1=1 #

2'or 1=1 --(空格)

3union all select 1,2,3 #

4username=‘ UNION SELECT 1,version(),3 #(版本)

5username=‘ UNION SELECT 1,user(),3 #(用户)

然后再给大家介绍一下sql注入的一个工具是sqlmap

最后给大家两点建议

1 使用预处理语句PDO

2 对参数进行转义(addslashes/mysql_real_escape_string)

当然了大家如果想具体学习sql的攻击原理以及,sql的防御。和sqlmap的使用可以私聊我哦

标签: