CI框架的安全性分析


Posted in PHP onMay 18, 2016

本文分析了CI框架的安全性。分享给大家供大家参考,具体如下:

用过ci框架的人都知道,ci框架能大大缩短你的代码。其实,ci框架更能提高你网站的安全性。

防止对数据库的攻击

数据输入可能引发许多问题。因为 HTML 和数据库的限制,数据中总包含特定的符号—举例来说,省略符号和引号—可能导致你的数据库遭到攻击,最终得到你无法预料的结果。

解决方案是在把这些数据存入数据库前对这些数据进行相关处理。这样做会浪费一些系统时间,增加一些额外编码。

CI 的表单辅助函数会自动地完成这些工作。因此,当你编写一个输入框时:

echo form_input('username', 'johndoe');

CI 也隐式地执行下列校验函数:

function form_prep($str = '')
{
  if ($str === '')
  {
    return '';
  }
  $temp = '__TEMP_AMPERSANDS__';
  // Replace entities to temporary markers so that
  // htmlspecialchars won't mess them up
  $str = preg_replace("/&#(\d+);/", "$temp\\1;", $str);
  $str = preg_replace("/&(\w+);/", "$temp\\1;", $str);
  $str = htmlspecialchars($str);
  // In case htmlspecialchars misses these.
  $str = str_replace(array("'", '"'), array("'", """), $str);
  // Decode the temp markers back to entities
  $str = preg_replace("/$temp(\d+);/","&#\\1;",$str);
  $str = preg_replace("/$temp(\w+);/","&\\1;",$str);
  return $str;
}

上述函数捕获像“&”这样的特殊字符,以便在你的页面提交时不会造成混乱。你应该知道,有些字符会引起问题。

并不是所有的用户都会中规中矩的输入符合要求的信息,你也不可能知道使用浏览器输入信息的是什么人,他们在想什么,做什么。你可以使用 CI 来防止输入不符合要求的信息。当然,你大可不必知道 CI 是如何在幕后为你做到这一切的,你只需要简单地输入如下代码:

echo form_input('username', 'johndoe');

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

PHP 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
PHP图片上传代码
Nov 04 PHP
php快递单号查询接口使用示例
May 05 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
PHP安全上传图片的方法
Mar 21 PHP
详解PHP数组赋值方法
Nov 07 PHP
教大家制作简单的php日历
Nov 17 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
May 05 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
Oct 02 PHP
PHP的swoole扩展安装方法详细教程
May 18 #PHP
CI框架支持$_GET的两种实现方法
May 18 #PHP
CI框架中$this->load->library()用法分析
May 18 #PHP
CI框架数据库查询之join用法分析
May 18 #PHP
CI框架简单邮件发送类实例
May 18 #PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 #PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 #PHP
You might like
php cli 方式 在crotab中运行解决
2010/02/08 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
PHP微商城开源代码实例
2019/03/27 PHP
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
PHP abstract与interface之间的区别
2013/11/11 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
python 有效的括号的实现代码示例
2019/11/11 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
资产经营总监岗位职责范文
2013/12/01 职场文书
怎样写好自我鉴定
2013/12/04 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书