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
php数组总结篇(一)
Sep 30 PHP
PHP setTime 设置当前时间的代码
Aug 27 PHP
基于empty函数的判断详解
Jun 17 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 PHP
php实现发送微信模板消息的方法
Mar 07 PHP
php类的定义与继承用法实例
Jul 07 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
Laravel 模型关联基础教程详解
Sep 17 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 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实现水仙花数的4个示例分享
2014/04/08 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
python 字符串和整数的转换方法
2018/06/25 Python
基于Python的PIL库学习详解
2019/05/10 Python
Django 路由控制的实现
2019/07/17 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
优秀教师获奖感言
2014/01/31 职场文书
班级年度安全计划书
2014/05/01 职场文书
安全负责人任命书
2014/06/06 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript
Python中with上下文管理协议的作用及用法
2022/03/18 Python
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技