`
dcj3sjt126com
  • 浏览: 1826636 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Yii防注入攻击笔记

    博客分类:
  • YII
阅读更多

网站表单有注入漏洞须对所有用户输入的内容进行个过滤和检查,可以使用正则表达式或者直接输入字符判断,大部分是只允许输入字母和数字的,其它字符度不允许;对于内容复杂表单的内容,应该对html和script的符号进行转义替换:尤其是<,>,',"",&这几个符号

这里有个转义对照表:
http://blog.csdn.net/xinzhu1990/article/details/7032301

单引号替换成两个

直接将客户端传过来的的参数值直接组成字符串sql,而不是使用statment填充参数的方式,也没有进行字符串处理和过滤,这些地方都有注入的漏洞,尤其是没有对单引号过滤

php里有转义的函数可以直接调用addslashes(), stripslashes(), htmlspecialchars(), htmlentities(), nl2br() 等函数.

addslashes(), stripslashes() 一般是入数据库和出库的时候使用,以免变量中存储类似引号这些关键词

htmlspecialchars() 函数只用来转义少量HTML, &,双引号,大于号和小于号.并不会全部转换成 HTML 所定的 ASCII 转换

htmlentities()这个是全部转换html实体,和htmlspecialchars()区别在于,这个函数是转义全部的字符,而htmlspecialchars()仅仅转义上面限定的5个特殊字符!

htmlspecialchars() 转义特别的字符为HTML实体;

 

   '&' (ampersand) becomes '&amp;'

   '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.

   ''' (single quote) becomes '&#039;' only when ENT_QUOTES is set.

   '<' (less than) becomes '&lt;'

   '>' (greater than) becomes '&gt;'

当显示文本时,调用 CHtml::encode() 对其中的HTML编码。这可以防止XSS注入.

使用cookies时使用Yii内置的cookies组件来进行cookie操作,不要使用$_COOKIES。

这样可以防止cookie攻击

$cookie=Yii::app()->request->cookies[$name];

$value=$cookie->value;

Yii::app()->request->cookies[$name]=$cookie;

对于是知道类型的post,get参数,得先转换类型,尤其是知道是整型的

防范XSS攻击的最重要的措施之一就是:在显示用户输入的内容之前进行内容检查。

Yii提供了一个很有用的组件CHtmlPurifier可以将通过有效的审查、安全和白名单功能来把所审核的内容中的所有的恶意代码清除掉,并且确保过滤之后的内容过滤符合标准。

CHtmlPurifier组件可以作为一个widget或者filter来使用。 当作为一个widget来使用的时候,CHtmlPurifier可以对在视图中显示的内容进行安全过滤。

<?php $this->beginWidget('CHtmlPurifier'); ?>

//...这里显示用户输入的内容...

<?php $this->endWidget(); ?>

跨站请求伪造(简称CSRF)攻击,即攻击者在用户浏览器在访问恶意网站的时候,让用户的浏览器向一个受信任的网站发起攻击者指定的请求。 Yii实现了一个CSRF防范机制,用来帮助防范基于POST的攻击。默认情况下,CSRF防范是禁用的。如果你要启用它,可以编辑应用配置 中的组件中的CHttpRequest部分。

return array(

   'components'=>array(

       'request'=>array(

           'enableCsrfValidation'=>true,

       ),

   ),

);

要显示一个表单,请使用CHtml::form而不要自己写HTML代码。

Yii实现了一个cookie验证机制,可以防止cookie被修改。启用之后可以对cookie的值进行HMAC检查。

return array(

   'components'=>array(

       'request'=>array(

           'enableCookieValidation'=>true,

       ),

   ),

);

直接使用AR对象赋值操作数据库的Yii会自动做防注入处理。

不使用AR对象赋值方式,使用直接sql的,也应该使用这种参数赋值的方式,可以防止注入攻击:

$db = Yii::app()->db;

$sql = "select * from table where userid=:userid and date between :date_start and :date_end"

$results = $db->createCommand($sql)->query(array(

 ':userid' => 115,':date_start'=>'2009-12-1',':date_end'=>'2009-12-31',

));

...

 

本文出自 “小何贝贝的技术空间” 博客,请务必保留此出处http://babyhe.blog.51cto.com/1104064/1250000

 
 
分享到:
评论

相关推荐

    yii2 创建表单 笔记

    yii2 创建表单 笔记

    yii2常用笔记

    这个是关于yii2常用的笔记

    yii2 文件上传笔记

    yii2 文件上传笔记

    PHP YII框架教程+笔记.zip

    PHP YII框架教程+笔记.zip

    Yii2.0学习笔记完全版

    Yii2.0学习笔记完全版 Yii2 Yii2.0 Yii2.0学习 Yii2.0学习笔记

    Yii框架学习笔记.pdf

    yii框架学习笔记,主要详解请求的处理流程,yii组件、事件和行为,国际化,日志,视图,以及控制台应用。 带注释的源代码下载:https://github.com/kaimixu/yii-book

    yii框架笔记,绝对值得经典

    yii框架笔记,绝对值得经典,yii框架笔记,绝对值得经典

    Yii框架学习笔记

    Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。Yii是最有效率的PHP框架之一。Yii是创始人薛强的心血结晶,于2008年1月1日开始开发。

    yii2数据缓存 学习笔记

    yii 学习笔记,其中包括数据缓存、缓存组件、缓存过期、缓存依赖的理解及yii2数据缓存的测试代码

    YII 学习笔记

    这是开源PHP开发框架Yii全方位教程,想要学习yii框架吗,这个笔记可以快速让你了解yii,撑握yii

    Yii2—yii2学习—某课网学习笔记

    yii2学习笔记,一边看某课网一遍实践一遍总结,整理文档

    Yii框架笔记.pdf

    Yii框架笔记.pdf

    yii框架yii框架yii框架yii框架yii框架

    很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架

    Yii框架防止sql注入,xss攻击与csrf攻击的方法

    本文实例讲述了Yii框架防止sql注入,xss攻击与csrf攻击的方法。分享给大家供大家参考,具体如下: PHP中常用到的方法有: /* 防sql注入,xss攻击 (1)*/ function actionClean($str) { $str=trim($str); $str=strip...

    【IT教程网】yii视频教程

    教程名称: 【】yii视频教程 【】01-02-Yii-代码课件笔记图解.rar1.2M【】01-yii-视频.rar169.1M【】02-Yii-视频资料.rar249.8M【】03-Yii-视频资料.rar286.2M【】04-Yii-代码笔记图解.rar1.5M【】04-Yii-视频资料...

    深入理解Yii2.0

    《深入理解Yii2.0》是一本干货。主要讲解Yii2.0及所代表的最新一代Web开发框架的新特性、新技术、新理念、新模式。 采用的方式是分析框架的源代码,尝试从根上进行理解和阐述,并融入个人使用Yii开发的一些经验和...

    Yii2.0打造京东商城平台PHP电商实战Yii2.0视频教程

    Yii2.0级基于Yii1.X完全重写的,不仅是小版本升级的升级。所以想要系统学习Yii2.0这个框架这套教程可以从实战项目带你入手。不错的学习YII框架的基础课程,电商系统的结构完整、框架资源太大,传百度网盘了,链接在...

    yii framework(Yii)框架window版

    Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。事实上...

Global site tag (gtag.js) - Google Analytics