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 相关文章推荐
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
php数组的一些常见操作汇总
Jul 17 PHP
LotusPhp笔记之:Cookie组件的使用详解
May 06 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
php实现图片上传、剪切功能
May 07 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
实例讲解PHP表单处理
Feb 15 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
PHP常量及变量区别原理详解
Aug 14 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类的使用 实例代码讲解
2009/12/28 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
js下用gb2312编码解码实现方法
2009/12/31 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
Python实现多线程HTTP下载器示例
2017/02/11 Python
Python3实现转换Image图片格式
2018/06/21 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
《自选商场》教学反思
2014/02/14 职场文书
班委竞选稿范文
2015/11/21 职场文书
公司周年庆寄语
2019/06/21 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
python基础之错误和异常处理
2021/10/24 Python
Python实现对齐打印 format函数的用法
2022/04/28 Python