TP5之安全机制

防止sql注入


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

1 $wheres = array();
2 
3 $wheres['account'] = $account;
4 
5 $wheres['password'] = $password;
6 
7 $User->where($wheres)->find();

 

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

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

 

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



表单合法性检测


1、配置insertFields和updateFields属性

 1 class UserInfoModelextends Model {
 2 
 3      // 数据表名字
 4 
 5      protected $tureTableName ='user';
 6 
 7     
 8 
 9      // 配置插入和修改的字段匹配设置(针对表单)
10 
11      protected $insertFields =array('name','sex','age');
12 
13      protected $updateFields =array('nickname','mobile');
14 
15 } 

 

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

 1 // 用户注册(示意性接口:插入)
 2 
 3      public function register() {
 4 
 5           // ...
 6 
 7           // 使用Model的create函数更安全
 8 
 9           $User= D('UserInfo');
10 
11           $User->create();
12 
13           $ID= $User->add();
14 
15           if($ID) {
16 
17                $result= $User->where('id=%d',array($ID))->find();
18 
19                echo json_encode($result);
20 
21           }
22 
23           // ...
24 
25      } 

 

2、使用field方法直接处理

1 // 插入
2 
3 M('User')->field('name,sex,age')->create();
4 
5 // 更新
6 
7 M('User')->field('nickname,mobile’)->create();

 

 

over!over!over!

转载于:https://www.cnblogs.com/yulongcode/p/10580266.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript --- [jsonp] script标签的妙用(绕过同源限制)

1. 同源 1.1 什么是同源 协议、域名、端口号相同 1.2 为什么有同源政策 同源政策是为了保护用户信息的安全,放置恶意的网站窃取数据。最初的同源政策是指A网站再客户端设置的Cookie,B网站是不能访问的. 随着互联网的发展,同源政策也越来越严格,在不同源的情况下,其中有一项…

SQL登录报错

在安装完SQL后,发现报出了error40和53的错误,作为小白的我也是一脸懵逼,明明一切都是按照默认加下一步安装的,为什么到了连接数据库的时候就出现了问题呢? 后来经过调查,发现需要将sql配置管理的ip中的一项…

复活

此刻--复活转载于:https://www.cnblogs.com/lyqlyq/p/9881646.html

javascript --- 瀑布流的实现

说明 源代码 1. 瀑布流 出现问题: 设计给的图片不是同一个尺寸大小,因此不能规则的放入到给定的DOM结构中.此时,需要使用瀑布流技术来解决这个问题 解决的思路: 让图片等宽、不等高 核心: 用到了定位 img {position: absolute;left: 最小的索引 * 图片的宽度;top: 最小的图…

不同权限访问详细细节

1 package com.package1;2 3 /**4 * 程序执行入口和调用方法在不同类但在同一个包中,除了private方法,其他任何权限的方法都可以都可相互调用5 * author Administrator6 *7 */8 public class Source {9 public static void main(String[] args) …

洛谷P2822组合数问题

传送门啦 15分暴力&#xff0c;但看题解说暴力分有30分。 就是找到公式&#xff0c;然后套公式。。 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std;long long read(){char ch;bool f false;wh…

基于Docker的GoldenGate部署

前言Docker最近几年异常火爆&#xff0c;主要是因为其方便、快捷、轻量&#xff0c;相对于VM&#xff0c;它不需要占用太多资源&#xff0c;随时可以创建、删除&#xff0c;或在已有image上添加一些软件&#xff0c;再制作成另一个模板image供日后使用。Docker提供的Hub或priva…

javascript --- 防抖与节流

说明 源码 1. 防抖与节流 1.1 防抖 防抖: 触发事件后,在n秒内函数只执行一次 记忆: 你手比较抖,不小心按了按钮2下…你只希望它只执行一次.且按第二次结束时间算…这就用到了防抖技术 1.2 节流 节流: 连续发生的事件,在n秒内只执行一次函数 1.3 防抖与节流的区别 在一段…

bugku_本地包含

先上payload: 1、?hello);show_source(%27flag.php%27);// 2、?hello);include $_POST[zzz];// POST传参:zzzphp://filter/readconvert.base64-encode/resourceflag.php 3、?hellofile(%27flag.php%27) 4、?helloshow_source(flag.php) 首先我们来看源码&#xff1a; <?…

javascript --- js中的作用域 变量提升

1 求以下函数的输出 1.1 考察点: 变量提升、this、作用域 // 考察点 作用域、this、变量提升 var a 10 function test() {a 100console.log(a) console.log(this.a) var aconsole.log(a) } test()第一个和第三个肯定是100在node环境下,没有window的概念,因此输出的是 und…

洛谷1091合唱队形

题目描述 N位同学站成一排&#xff0c;音乐老师要请其中的(N−K)位同学出列&#xff0c;使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形&#xff1a;设K位同学从左到右依次编号为1,2,…,K&#xff0c;他们的身高分别为T1​,T2​,…,TK​&#xff0c; 则他们的身高…

poj3069 Saruman's Army(贪心)

https://vjudge.net/problem/POJ-3069 弄清楚一点&#xff0c;第一个stone的位置&#xff0c;考虑左右两边都要覆盖R&#xff0c;所以一般情况下不会在左边第一个&#xff08;除非前两个相距>R&#xff09;。 一开始二层循环外层写的i1&#xff0c;这样对于数据诸如1 1 1>…

Redis的key和value大小限制

Redis的key和value大小限制今天研究了下将java bean序列化到redis中存储起来&#xff0c;突然脑袋灵光一闪&#xff0c;对象大小会不会超过redis限制&#xff1f;不管怎么着&#xff0c;还是搞清楚一下比较好&#xff0c;所以就去问了下百度&#xff0c;果然没多少人关心这个问…

jquery --- 监听tab栏的变化

1. jQuery样式操作 1.1 操作css方法 参数只写属性名,则返回属性值(字符串) $(this).css(color)参数是 属性名、属性值(逗号分隔&#xff0c;则表示设置属性 $(this).css(color,red)参数可以是对象的形式 $(this).css({width: 400px,height: 400px })1.2 设置类样式方法 添…

bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线【线段树+hash】

bzoj题面什么鬼啊…… 题目大意&#xff1a;有一个初始值均为0的数列&#xff0c;n次操作&#xff0c;每次将数列(ai,bi-1)这个区间中的数与ci取max&#xff0c;问n次后元素和 离散化&#xff0c;然后建立线段树&#xff0c;每次修改在区间上打max标记即可 #include<iostrea…

Redis单机和集群环境搭建

一、安装单机版redis 1、可以自己去官网下载&#xff0c;当然也可以用课程提供的压缩包 # yum install gcc # wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz # tar -xzvf tcl8.6.1-src.tar.gz # cd /usr/local/tcl8.6.1/unix/ # ./configure # make &…

yum离线安装

安装yum-plugin-downloadonly插件 yum install -y yum-plugin-downloadonly下载对应的软件包&#xff0c;我们以mysql为例&#xff0c;终端输入如下命令 yum install -y --downloadonly --downloaddir/soft/mysql mysql --downloaddir用来指定下载的路径转载于:https://www.cnb…

算法 --- 递归实现多级树展开结构

说明 先根据数据渲染,然后再实现事件 渲染 在项目中,经常会给出一个深度不确定的数组,数字结构如下: data [{name: a, child:[{name: a1},{name: a2, child: [{name:a21}]}]},{name: b} ]要求将数组渲染成对应的目录结构, 结构如下: <ul><li>a<ul><…

PYTHON自动化Day4-交换变量,字符串方法,拷贝,集合,文件,文件指针

一.判断 # 非空即真、非0即真 # 不为空的话就是true&#xff0c;是空的话就是false # 只要不是0就是true&#xff0c;是0就是false# 布尔类型 # True False name input(请输入你的名字&#xff1a;).strip() a [] #false d{} # false c 0 #false f tuple() #false e #fa…

Ajax-jsonp

一、什么是Jsonp jsonp(json with padding) 是一种“使用模式”&#xff0c;可以让网页从别的域名那获取资料&#xff0c;即跨域读取数据。 为什么会使用jsonp呢&#xff1f;因为同源策略&#xff08;数据来源一致&#xff09;&#xff0c;现在所有支持javascript 的浏览器都会…