(二) 安全防范基础

1. 表单合法性的验证,防止字段注入
  • 在自定义模型中
    • insertFields 属性 ---只允许插入的字段
    • updateFields 属性 ---只允许更新的字段
  • 在控制器中
    • $model -> field('字段列表')->create()
    • $model ->field('字段列表') -> save()
  • 辅助方法
    • $model -> where(条件)
      • 条件最好用数组形式 , 可以有防注入等功能
2. 输入过滤
  • 使用框架的 I 方法 ,默认使用 htmlspecialchars 过滤
    • 可以设置全局过滤方法 'DEFAULT_FILTER' => 'strip_tags'
  • 也可以在写入数据的时候过滤
    • $model->filter('strip_tags')->add();

3. 表单令牌
  • 在应用或者模块的配置目录新建行为定义文件 tags.php , 在文件中写入
return array ( 'view_filter'
=>array ( 'Behavior\TokenBuildBehavior' ) ,
) ;

  • 在配置文件中 (不是tags.php), 可以配置令牌相关配置
    • 'TOKEN_ON' => true, // 是否开启令牌验证 默认关闭
    • 'TOKEN_NAME' => '__hash__', // 令牌验证的表单隐藏字段名称,默认为__hash__
    • 'TOKEN_TYPE' => 'md5', //令牌哈希验证规则 默认为MD5
    • 'TOKEN_RESET' => true, //令牌验证出错后是否重置令牌 默认为true
  • 在视图中 ,通过 {__TOKEN__} 指定表单令牌 位置
  • 在控制器中可以通过
    • C('TOKEN_ON',false) 设置临时不开启令牌验证
  • 令牌只有在用 $model -> add() , $model -> save() 才会进行验证
  • 自定义验证令牌
    • if (!$model->autoCheckToken($_POST)){
    • // 令牌验证错误
    • }

4. 防止SQL 注入
  • 尽量使用数组方式
  • 使用字符串 , 使用预处理机制
    • $Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();
    • $model->query('select * from user where id=%d and status=%d',$id,$status);
  • 自动完成跟自动完成机制进行自定义过滤
  • 尽量使用PDO方式,使用参数绑定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值