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的使用可以私聊我哦