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 相关文章推荐
PHP4 与 MySQL 交互使用
Oct 09 PHP
PHP面向对象编程快速入门
Dec 14 PHP
php网页后退不再出现过期
Mar 08 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
Nov 17 PHP
php针对cookie操作的队列操作类实例
Dec 10 PHP
PHP实现WebService的简单示例和实现步骤
Mar 27 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
php 实现进制相互转换
Apr 07 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 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
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
php的curl封装类用法实例
2014/11/07 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
sina的lightbox效果。
2007/01/09 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
JavaScript 异步时序问题
2020/11/20 Javascript
Python中使用dom模块生成XML文件示例
2015/04/05 Python
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
python 基础教程之Map使用方法
2017/01/17 Python
Python 错误和异常代码详解
2018/01/29 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
pycharm修改file type方式
2019/11/19 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
python 实现图片批量压缩的示例
2020/12/18 Python
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
比较基础的php面试题及答案-编程题
2012/10/14 面试题
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
Redis唯一ID生成器的实现
2022/07/07 Redis