zoukankan      html  css  js  c++  java
  • TP之安全机制

    防止sql注入


    1、查询条件尽量使用数组方式,具体如下:

    1 $wheres = array();
    2 
    3 $wheres['account'] = $account;
    4 
    5 $wheres['password'] = $password;
    6 
    7 $User->where($wheres)->find();

    2、如果必须使用字符串,建议使用预处理机制,具体如下:

    1 $User = D('UserInfo');
    2 
    3 $User->where('account="%s" andpassword="%s"',array($account,$password))->find();

    3、可以使用PDO方式(绑定参数),因为这里未使用PDO,所以不罗列,感兴趣的可自行查找相关资料。



    表单合法性检测


    1、配置insertFields和updateFields属性

     1 class UserInfoModelextends Model {
     2 
     3      // 数据表名字
     4 
     5      protected $tureTableName ='user';
     6 
     7     
     8 
     9      // 配置插入和修改的字段匹配设置(针对表单)
    10 
    11      protected $insertFields =array('name','sex','age');
    12 
    13      protected $updateFields =array('nickname','mobile');
    14 
    15 } 

    上面的定义之后,当我们使用了create方法创建数据对象后,再使用add方法插入数据时,只会插入上面配置的几个字段的值(更新类同),具体如下:

     1 // 用户注册(示意性接口:插入)
     2 
     3      public function register() {
     4 
     5           // ...
     6 
     7           // 使用Model的create函数更安全
     8 
     9           $User= D('UserInfo');
    10 
    11           $User->create();
    12 
    13           $ID= $User->add();
    14 
    15           if($ID) {
    16 
    17                $result= $User->where('id=%d',array($ID))->find();
    18 
    19                echo json_encode($result);
    20 
    21           }
    22 
    23           // ...
    24 
    25      } 

    2、使用field方法直接处理

    1 // 插入
    2 
    3 M('User')->field('name,sex,age')->create();
    4 
    5 // 更新
    6 
    7 M('User')->field('nickname,mobile’)->create();

     

    over!over!over!

    let the world have no hard-to-write code ^-^
  • 相关阅读:
    springcloud(三)
    springcloud(二)
    spring-cloud(一)
    springboot(三)
    springboot(二)
    springboot(一)
    dubbox
    SpringBoot终章(整合小型进销系统)
    SpringBoot第三节(thymeleaf的配置与SpringBoot注解大全)
    SpringBoot--集成Shiro
  • 原文地址:https://www.cnblogs.com/ovim/p/10580266.html
Copyright © 2011-2022 走看看