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 相关文章推荐
MySQL修改密码方法总结
Mar 25 PHP
认识并使用PHP超级全局变量
Jan 26 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
php的hash算法介绍
Feb 13 PHP
php中rename函数用法分析
Nov 15 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
php设计模式之单例模式实例分析
Feb 25 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
phpmailer绑定邮箱的实现方法
Dec 01 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
PHP递归实现快速排序的方法示例
Dec 18 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在字符串中查找另一个字符串
2008/11/19 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
JS写滑稽笑脸运动效果
2020/05/28 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
python中os操作文件及文件路径实例汇总
2015/01/15 Python
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
Python操作串口的方法
2015/06/17 Python
Python中random模块生成随机数详解
2016/03/10 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
用python制作个音乐下载器
2021/01/30 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
自考自我鉴定范文
2013/10/30 职场文书
校园报刊亭创业计划书
2014/01/02 职场文书
学年末自我鉴定
2014/01/21 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
工会趣味活动方案
2014/08/18 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书