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实现从ftp服务器上下载文件树到本地电脑的程序
Feb 10 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
浅析php header 跳转
Jun 17 PHP
PHP程序员基本要求和必备技能
May 09 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
Dec 25 PHP
CI框架整合widget(页面格局)的方法
May 17 PHP
浅谈php处理后端&接口访问超时的解决方法
Oct 29 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 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程序的方法小结
2012/02/23 PHP
php 购物车完整实现代码
2014/06/05 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
零基础学Python(一)Python环境安装
2014/08/20 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
详解Python文件修改的两种方式
2019/08/22 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
满月酒答谢词
2014/01/14 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
清洁工个人工作总结
2015/03/05 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
表扬信格式模板
2015/05/05 职场文书
Django给表单添加honeypot验证增加安全性
2021/05/06 Python