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 相关文章推荐
一个用php实现的获取URL信息的类
Jan 02 PHP
PHP教程 变量定义
Oct 23 PHP
PHP学习笔记之数组篇
Jun 28 PHP
php的sso单点登录实现方法
Jan 08 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
Nov 09 PHP
php微信公众平台示例代码分析(二)
Dec 06 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 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
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
List the Codec Files on a Computer
2007/06/11 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
JavaScript类的写法
2016/09/17 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
建筑专业自荐信
2013/10/18 职场文书
通信研究生自荐信
2014/02/01 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
护士医德考评自我评价
2015/03/03 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
改造DE1103三步曲
2022/04/07 无线电
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android