从ThinkPHP谈基于框架开发程序的安全性二(有开源程序实例)

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

### 简要描述: 从ThinkPHP谈基于框架开发程序的安全性二,继续讨论基于框架开发可能带来的问题,厂商忽略不忽略都没关系,主要是给大家提出来,不管是程序员安全意识的问题,还是框架本身的设计缺陷,总之在使用这些框架开发时不要给自己挖坑了。 ### 详细说明: 首先我们来看看官方文档: http://document.thinkphp.cn/manual_3_2.html#model_instance 这里主要介绍了模型实例化的一些方法 终点介绍了D方法和M方法的使用 D方法实例化 ``` <?php //实例化模型 $User = D('User'); // 相当于 $User = new \Home\Model\UserModel(); // 执行具体的数据操作 $User->select(); ``` M方法实例化 ``` // 使用M方法实例化 $User = M('User'); // 和用法 $User = new \Think\Model('User'); 等效 // 执行其他的数据操作 $User->select(); ``` 最后官方提到: ``` 我们在实例化的过程中,经常使用D方法和M方法。 这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法。 ``` 问题: 那么,要是我们在实例化模型时,程序员想动态传入模型内容咧?;例如: ``` ...... $table = I('post.table_name'); $model = D($table); //$model = M($table); $row = $model->where("role=".$role)->find(); ``` 这样是不是可行 我们来写个例子看一下。 ``` public function test(){ if (IS_POST) { $role = I('post.role', '', 'trim'); if (empty($role)) { $this->error('角色不能为空'); } $map['role'] = $role; $table = I('post.table_name'); $model = D($table); //$model = M($table); $row...

0%
暂无可用Exp或PoC
当前有0条受影响产品信息