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 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
手把手教你使用DedeCms的采集的图文教程
Mar 11 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
php判断并删除空目录及空子目录的方法
Feb 11 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
常用PHP封装分页工具类
Jan 14 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 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/03/27 PHP
一个简单的PHP验证码实现代码
2014/05/10 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
python并发和异步编程实例
2018/11/15 Python
使用Python 统计高频字数的方法
2019/01/31 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
支教自我鉴定
2014/01/18 职场文书
高中体育教学反思
2014/01/29 职场文书
市场专员岗位职责
2014/02/14 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
自查自纠整改报告
2014/11/06 职场文书
中学生逃课检讨书
2015/02/17 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技