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脚本的10个技巧(4)
Oct 09 PHP
PHP 写文本日志实现代码
May 18 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
php牛逼的面试题分享
Jan 18 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
php 中phar包的使用教程详解
Oct 26 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
PHP配置文件php.ini中打开错误报告的设置方法
Jan 09 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
我的论坛源代码(二)
2006/10/09 PHP
?繁体转换的class
2006/10/09 PHP
php Try Catch异常测试
2009/03/01 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
jquery select下拉框操作的一些说明
2010/04/02 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
JS中的作用域链
2017/03/01 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
Python中Selenium库使用教程详解
2020/07/23 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
先进班集体事迹材料
2014/12/25 职场文书
总经理司机岗位职责
2015/04/10 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
python中如何对多变量连续赋值
2021/06/03 Python
React列表栏及购物车组件使用详解
2021/06/28 Javascript
Java实现简单小画板
2022/06/10 Java/Android