`
dcj3sjt126com
  • 浏览: 1870307 次
  • 性别: 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

 
 
分享到:
评论

相关推荐

    PHP YII框架教程+笔记.zip

    在安全方面,Yii框架提供了许多内置的安全防护措施,如防止SQL注入、跨站脚本(XSS)攻击和跨站请求伪造(CSRF)等。它的输入验证功能可以帮助开发者确保用户提交的数据安全可靠。此外,Yii还支持身份认证和授权,...

    YII学习笔记

    YII框架内置了多种安全机制,如防止SQL注入、XSS攻击、CSRF防护等,为开发者提供了一套完善的安全保障。 **9. 性能优化** YII支持缓存策略,包括数据缓存、页面缓存和片段缓存,通过这些机制可以显著提升Web应用的...

    韩顺平php全套视频教程笔记

    在实际应用方面,笔记可能涉及到常见的PHP框架,如Laravel、Yii、Symfony等,以及如何利用PHP进行文件操作(读写、上传下载、目录管理),邮件发送,会话管理,URL重写,安全防护(防止SQL注入、XSS攻击)等内容。...

    韩顺平PHP笔记

    2. **安全编程**:包括输入验证、防止SQL注入、XSS攻击等,笔记会强调安全编程的重要性并给出解决方案。 3. **性能优化**:如缓存技术、代码优化技巧,提升PHP程序的运行效率。 4. **部署与服务器配置**:了解如何...

    php学习笔记

    - **预处理语句**:学习预处理语句,防止SQL注入攻击。 9. **会话控制** - **session与cookie**:理解session和cookie的工作原理,以及在Web应用中如何使用它们来跟踪用户状态。 10. **模板引擎与框架** - **...

    php老师笔记

    `filter_var()`函数用于验证和过滤输入数据,防止注入攻击。 9. **错误与异常处理**:PHP使用`error_reporting()`设置错误报告级别,`try-catch`结构处理异常。自定义错误处理可以通过`set_error_handler()`实现。 ...

    PHP学习总结笔记.pdf

    安全方面,包括SQL注入防护、XSS攻击防范、CSRF防御、文件上传安全、密码哈希等措施。 【PHP网站常见模块】 非框架版和TP框架版(ThinkPHP)的常见模块包括用户认证、权限管理、session和cookie管理、错误和日志...

    燕十八001-060代码.PPT.笔记

    11. 安全性:网络安全是开发过程中的重要一环,燕十八会讲解如何防止SQL注入、XSS攻击,以及如何正确使用密码哈希和验证。 这个压缩包里的001-060ppt+笔记和001-060课堂代码,无疑是系统学习和复习PHP知识的宝贵...

    php笔记分享

    1. 输入验证:过滤用户输入,防止SQL注入、跨站脚本攻击(XSS)。 2. 输出编码:使用htmlspecialchars()等函数转义特殊字符,防止XSS。 3. 使用HTTPS:保护数据传输安全,防止中间人攻击。 通过这份PHP笔记,我们...

    PHP笔记大全.doc

    2. **安全编程**:防止SQL注入、XSS攻击,使用预编译语句,过滤用户输入等。 3. **性能优化**:减少数据库查询,合理使用缓存,优化代码结构。 4. **版本控制**:使用Git等工具进行版本管理和协作。 以上就是PHP的...

    php课外学习资料

    理解如何防止SQL注入、XSS攻击、CSRF攻击,以及正确使用PHP的过滤和验证函数,能够保护网站免受恶意攻击。另外,了解PHP的会话管理及加密技术,如Cookie和Session的使用,也有助于提升网站的安全性。 六、PHP性能...

    Topicos:迭戈·佩雷斯(Diego Perez),玛丽亚(Marialejandra)Castelli和路易斯·贝塞拉(Luis Becerra)

    5. PHP安全:讲解如何防止SQL注入、XSS攻击、CSRF等常见的Web安全问题,以及使用PHP内置的安全功能,如filter_var函数。 6. PHP性能优化:如内存管理、代码优化技巧、缓存策略以及使用PHP性能分析工具(如Xdebug)...

    php代码-test php

    - **安全**:防止SQL注入、XSS攻击、CSRF等网络安全问题,PHP提供了过滤和验证输入、安全编码等手段。 综上所述,"php代码-test php"这个项目可能是一个用于学习或测试PHP功能的简单示例,通过`main.php`的代码展示...

Global site tag (gtag.js) - Google Analytics