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下清空字符串中的HTML标签的代码
Sep 06 PHP
PHP session会话的安全性分析
Sep 08 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
PHP中include和require的区别实例分析
May 07 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
May 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
一篇不错的PHP基础学习笔记
2007/03/18 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python字典多条件排序方法实例
2014/06/30 Python
Python批量转换文件编码格式
2015/05/17 Python
深入理解Python中各种方法的运作原理
2015/06/15 Python
Python中atexit模块的基本使用示例
2015/07/08 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
Python中断多重循环的思路总结
2019/10/04 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
演讲稿开场白
2014/01/13 职场文书
给国外客户的邀请函
2014/01/30 职场文书
公司营业员的自我评价
2014/03/04 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
空乘英文求职信
2014/04/13 职场文书
坎儿井导游词
2015/02/09 职场文书
2015年国庆节活动总结
2015/03/23 职场文书