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下HTTP Response中的Chunked编码实现方法
Nov 19 PHP
ucenter通信原理分析
Jan 09 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
php实现的简单检验登陆类
Jun 18 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
php session 写入数据库
Feb 13 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Dec 14 PHP
php实现评论回复删除功能
May 23 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
Jun 30 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
浅谈Python 参数与变量
2020/06/20 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
大专学生求职信
2014/07/04 职场文书
企业整改报告范文
2014/11/08 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
2016年会开场白台词
2015/06/01 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫