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中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
教你如何使用php session
Oct 28 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
php根据地址获取百度地图经纬度的实例方法
Sep 03 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
学习php中的正则表达式
2014/08/17 PHP
Yii框架登录流程分析
2014/12/03 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
JavaScript window.location对象
2014/11/14 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
Javascript连接Access数据库完整实例
2015/08/03 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
python读取和保存视频文件
2018/04/16 Python
python实现windows下文件备份脚本
2018/05/27 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
详解Python学习之安装pandas
2019/04/16 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
房产销售经理职责
2013/12/20 职场文书
购房协议书范本
2014/04/11 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
保姆聘用合同
2015/09/21 职场文书