php防注入及开发安全详细解析


Posted in PHP onAugust 09, 2013

1、PHP注入的基本原理
程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对 用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据 库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的 SQL Injection,即SQL注入。 受影响的系统:对输入的参数不进行检查和过滤的系统.

SQL注入过程
正常来讲,我们通过地址接收一些必要的参数如:
页面中我们会使用 2 写入到SQL语句中
正常情况:Select * From Table where id=2

PHP100.php?id=2
如果我们对SQL语句熟悉,就知道2 我们可以替换成我们需要的SQL语句
如:and exists (select id from admin)

2、防止注入的几种办法
其实原来就是我们需要过滤一些我们常见的关键字和符合如:
Select,insert,update,delete,and,*,等等
例子:

function inject_check($sql_str) {
return preg_match('/select|insert|update|delete|/'|///*|/*|/././/|/.//|union|into|load_file|outfile/i', $sql_str);      // 进行过滤
}

或者是通过系统函数间的过滤特殊符号
Addslashes(需要被过滤的内容)

3、PHP其他地方安全设置
register_globals = Off 设置为关闭状态
SQL语句书写时尽量不要省略小引号和单引号

Select * From Table Where id=2 (不规范)
Select * From ·Table· Where ·id·='2' (规范)

提高数据库命名技巧,对于一些重要的字段可根据程序特点命名
对于常用方法加以封装,避免直接暴露SQL语句

正确的使用 $_POST $_GET $_SESSION 等接受参数,并加以过滤

PHP 相关文章推荐
十天学会php之第十天
Oct 09 PHP
PHP脚本的10个技巧(4)
Oct 09 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
30 个很棒的PHP开源CMS内容管理系统小结
Oct 14 PHP
php修改指定文件后缀的方法
Sep 11 PHP
PHP 实现类似js中alert() 提示框
Mar 18 PHP
WordPress中制作导航菜单的PHP核心方法讲解
Dec 11 PHP
PHP在线打包下载功能示例
Oct 15 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 #PHP
解析isset与is_null的区别
Aug 09 #PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 #PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 #PHP
浅析php变量作用域的一些问题
Aug 08 #PHP
解析php开发中的中文编码问题
Aug 08 #PHP
php中jpgraph类库的使用介绍
Aug 08 #PHP
You might like
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
师范应届生语文教师求职信
2013/10/29 职场文书
综合实践教学反思
2014/01/31 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python