TP5框架安全机制实例分析


Posted in PHP onApril 05, 2020

本文实例讲述了TP5框架安全机制。分享给大家供大家参考,具体如下:

防止sql注入

1、查询条件尽量使用数组方式,具体如下:

$wheres = array();
 
$wheres['account'] = $account;
 
$wheres['password'] = $password;
 
$User->where($wheres)->find();

2、如果必须使用字符串,建议使用预处理机制,具体如下:

$User = D('UserInfo');
 
$User->where('account="%s" andpassword="%s"',array($account,$password))->find();

3、可以使用PDO方式(绑定参数),因为这里未使用PDO,所以不罗列,感兴趣的可自行查找相关资料。

表单合法性检测

1、配置insertFields和updateFields属性

class UserInfoModelextends Model {
 
   // 数据表名字
 
   protected $tureTableName ='user';
 
   // 配置插入和修改的字段匹配设置(针对表单)
 
   protected $insertFields =array('name','sex','age');
 
   protected $updateFields =array('nickname','mobile');
 
}

上面的定义之后,当我们使用了create方法创建数据对象后,再使用add方法插入数据时,只会插入上面配置的几个字段的值(更新类同),具体如下:

// 用户注册(示意性接口:插入)
 
   public function register() {
 
     // ...
 
     // 使用Model的create函数更安全
 
     $User= D('UserInfo');
 
     $User->create();
 
     $ID= $User->add();
 
     if($ID) {
 
        $result= $User->where('id=%d',array($ID))->find();
 
        echo json_encode($result);
 
     }
 
     // ...
 
   }

2、使用field方法直接处理

// 插入
 
M('User')->field('name,sex,age')->create();
 
// 更新
 
M('User')->field('nickname,mobile')->create();

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
福利彩票幸运号码自动生成器
Oct 09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
Dec 02 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
php树型类实例
Dec 05 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
PHP序列化/对象注入漏洞分析
Apr 18 PHP
PHP去除字符串最后一个字符的三种方法实例
Mar 01 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 PHP
php去除deprecated的实例方法
Nov 17 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 #PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 #PHP
TP5框架实现签到功能的方法分析
Apr 05 #PHP
TP5框架页面跳转样式操作示例
Apr 05 #PHP
TP5框架实现的数据库备份功能示例
Apr 05 #PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 #PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 #PHP
You might like
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
Python字符串对象实现原理详解
2019/07/01 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
网络编辑求职信
2014/04/30 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript