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&java(一)
Oct 09 PHP
PHP 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
May 24 PHP
小谈php正则提取图片地址
Mar 27 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
PHP读取PPT文件的方法
Dec 10 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 PHP
laravel 验证错误信息到 blade模板的方法
Sep 29 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
jquery.post用法之type设置问题
2014/02/24 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
初识Javascript小结
2015/07/16 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
python实现小球弹跳效果
2019/05/10 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python使用minimax算法实现五子棋
2019/07/29 Python
django实现后台显示媒体文件
2020/04/07 Python
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
政协调研汇报材料
2014/08/15 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
建立共青团委员会的请示
2019/04/02 职场文书