thinkphp 输入过滤
永远不要相信客户端提交的数据,所以对于输入数据的过滤势在必行,我们建议:
- 开启令牌验证避免数据的重复提交;
- 使用自动验证和自动完成机制进行初步过滤;
- 使用系统提供的I函数获取用户输入数据;
- 对不同的应用需求设置不同的安全过滤函数,常见的安全过滤函数包括stripslashes、htmlentities、htmlspecialchars和strip_tags等;
使用I函数过滤
使用系统内置的I函数是避免输入数据出现安全隐患的重要手段,I函数默认的过滤方法是htmlspecialchars,如果我们需要采用其他的方法进行安全过滤,有两种方式:
如果是全局的过滤方法,那么可以设置DEFAULT_FILTER,例如:
'DEFAULT_FILTER' => 'strip_tags',
设置了DEFAULT_FILTER后,所有的I函数调用默认都会使用strip_tags进行过滤。
当然,我们也可以设置多个过滤方法,例如:
'DEFAULT_FILTER' => 'strip_tags,stripslashes',
如果是仅需要对个别数据采用特殊的过滤方法,可以在调用I函数的时候传入过滤方法,例如:
I('post.id',0,'intval'); // 用intval过滤$_POST['id']I('get.title','','strip_tags'); // 用strip_tags过滤$_GET['title']
要尽量避免直接使用$_GET $_POST $_REQUEST 等数据,这些可能会导致安全的隐患。 就算你要获取整个$_GET数据,我们也建议你使用
I('get.')的方式
写入数据过滤
如果你没有使用I函数进行数据过滤的话,还可以在模型的写入操作之前调用filter方法对数据进行安全过滤,例如:
$this->data($data)->filter('strip_tags')->add();
thinkphp 输入过滤的更多相关文章
- Vanilla Masker – 功能强大的输入过滤插件
Vanilla Masker 是一个纯 JavaScript 实现的输入内容过滤和自动转换插件.现在你可以使用一个简单而纯粹的 JavaScript 库来控制你的 input 元素,而不需要加载 jQ ...
- 如何实现select组件的选择输入过滤作用
实现select组件的选择输入过滤作用的js代码如下: /** *其中//******之间的部分显示的是在没有选择输入过滤功能的代码上加入的功能代码 ** / (function ( $ ) { $. ...
- ThinkPhp输入参数过滤
I('id',0); // 获取id参数 自动判断get或者post,不存在时返回默认值0 I('post.name','','htmlspecialchars'); //获取$_POST['name ...
- ThinkPHP输入验证和I方法使用
在Web开发过程中,我们经常需要获取系统变量或者用户提交的数据,这些变量数据错综复杂,而且一不小心就容易引起安全隐患,但是如果利用好ThinkPHP提供的变量获取功能,就可以轻松的获取和驾驭变量了. ...
- input输入过滤js
html部分使用方式 <input onkeyup="usrNameSet(this)" /> 其它的自己可以随便调用 Js部分 //只能输入数字.字母.小数点.汉字 ...
- javascript 键盘输入过滤,只能输入数字,小数一位且只能输入5
$("#right_div2 input[type='text'][class='textClass'][id^='asd_']").live("keydown" ...
- wireshark常用过滤规则
wireshark常用过滤规则:(Filter中输入过滤规则)1.源ip过滤:ip.src==1.1.1.1 (过滤源ip为1.1.1.1的包) 2.目的ip过滤:ip.d ...
- SyteLine实现字段过滤
如果说某个下拉列表,想过滤某些选项,该怎样来做呢,在Infor Syteline实现起来是一件很容易的事情.如在Fixed Assets窗口中的Class Code的下拉列表中,如果不想"_ ...
- wireshark常用的过滤命令
我们使用wireshark抓包,却不知道如何分析这些包,也无法从海量的包中提取自己需要的数据,下面简单介绍下wireshark的过滤规则. 过滤源ip.目的ip.在wireshark的过滤规则框Fil ...
随机推荐
- Employment Planning
Employment Planning 有n个月,每个月有一个最小需要的工人数量\(a_i\),雇佣一个工人的费用为\(h\),开除一个工人的费用为\(f\),薪水为\(s\),询问满足这n个月正常工 ...
- Excel处理
转载:https://www.cnblogs.com/cang12138/p/5606130.html 上面的博友已经讲的很清楚了,但是我们在服务端是获取不到前端上传文件的绝对路径的(因为新浏览器有安 ...
- css 垂直居中、水平居中
在父元素.子元素未知的情况下居中有两种方法: 第一种方法: .partent{ display:flex; justify-content:center; align-items:center; } ...
- web框架express学习一
服务端 node app.jsapp.jslet express = require("express"); let http = require("http" ...
- Final 可重入锁 安全发布
无状态对象(既不包含任何域,也不包含任何其他类中域的引用)一定是线程安全的. Final fianl域是不能修改的(但如果final域所引用的对象是可变的,那么这些被引用的对象是可变的) 除非需要可变 ...
- C++之宏定义实现两个数最值
转自:https://blog.csdn.net/baidu_33725271/article/details/69478782 方法一: 利用三重条件运算符 #include <stdio.h ...
- jsp+servlet中文乱码问题
jsp+servlet中文乱码问题 servlet想要获得前台传来的值 String strName=new String(request.getParameter("name") ...
- vbs 之 wscript
https://www.jb51.net/article/20919.htm '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ...
- 洛谷 P3369 【模板】普通平衡树 (Treap)
题目链接:P3369 [模板]普通平衡树 题意 构造一种数据结构满足给出的 6 种操作. 思路 平衡树 平衡树的模板题. 先学习了一下 Treap. Treap 在插入结点时给该结点随机生成一个额外的 ...
- redis 配置文件aof配置
redis 配置文件aof配置: bind 127.0.0.1 port 6379 daemonize yes dbfilename dump.rdb dir /new_renpeng/redis/ ...