您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > PHP >

CakePHP: 安全性方面的考虑

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 13:15 点击:

1、XSS

典型的例子是在用户签名字段中输入html代码: <img url(/admin/users/delete/1 ... />

如果该数据被存储到系统中,然后拥有系统管理权限的人查看该用户信息,将导致误删除动作。

解决方法有:

使用h()来处理界面用户输入,会把html符号转义,从而使html输入无效
使用htmlpurify组件来校验用户输入数据,这会有点慢
使用model层面的validate规则,在你自己的app_model基类中定义检查函数
    public function saneHtml($check) {
       return current($check) === strip_tags(current($check));
    }

     然后在各个model中使用该函数进行数据检验

    public $validate = array(
        username => array(
            notEmpty => array(
                rule => notEmpty,
                message => This field cannot be left blank.,
            ),
            saneHtml => array(
                 rule => saneHtml,
                 message => Some invalid characters were detected in your input,
            ),           
        ),

    )

2、欺骗性链接

被伪装的html短链接(某些短链接服务)发到系统管理员IM中,而其实际链接为危险的系统操作如/admin/users/delete/1,系统管理员在不知情的情况下点击该伪冒链接将导致删除用户的操作发生。

解决方法有

在危险操作中事先检查是否有数据递交:
        function admin_delete($id = null) {
          if (!$this->RequestHandler->isPost()) {
             $this->render();
             return;
        }

检查url是否正确,确保不是仿冒的钓鱼网站
通过模板引擎生成删除确认 的提示信息are you sure to delete? 以避免误操作
3、sql注入

通过在url中以sql语句替换某些参数,将导致系统被注入sql

解决方法有在post中strip掉sql特殊字符,或避免使用直接的sql语句,而是用CakePHP的find函数,会自动处理sql注入的问题。

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • PHP测试
    • 十天学会php之第六天
    • 几种显示数据的方法的比较
    • 使用xmlhttp为网站增加域名查询功能
    • PHP+MYSQL+Javascript数据库查询结果的动态显示
    • 查找数组中指定键名的值
    • 用redis实现跨服务器session
    • 用新浪微博接口发送图片微博失败的原因
    • smarty局部缓存技术[源码分析]
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1