用户
 找回密码
 入住 CI 中国社区
搜索
12
返回列表 发新帖
楼主: hbualong
收起左侧

[讨论/交流] ci是怎么样防sql注入的

[复制链接]
发表于 2016-5-23 17:09:33 | 显示全部楼层
hbualong 发表于 2016-5-23 10:32
其实我只是想研究一下ci的防sql注入机制,,看看怎么写是安全的,怎么样有漏洞 ...

CI并没有使用预编译机制。
  1. $mysqli = new mysqli("localhost", "root", "root", 'demo');
  2.         //使用问号替代变量位置
  3.         $sql = "SELECT uid,username FROM user WHERE username=?";
  4.         $stmt = $mysqli->prepare($sql);
  5.         //绑定变量
  6.         $stmt->bind_param("s", $username);
  7.         $stmt->execute();
  8.         $stmt->bind_result($uid, $username);
  9.         while ($stmt->fetch()) {
  10.             $row = array();
  11.             $row['uid'] = $uid;
  12.             $row['username'] = $username;
  13.             $userinfo[] = $row;
  14.         }
复制代码

CI使用的过滤方式是使用原生的过滤方法:
  1. protected function _escape_str($str)
  2.         {
  3.                 return $this->conn_id->real_escape_string($str);
  4.         }
复制代码
 楼主| 发表于 2016-7-4 10:51:20 | 显示全部楼层
yuzhigang5460 发表于 2016-5-23 17:09
CI并没有使用预编译机制。

CI使用的过滤方式是使用原生的过滤方法:

我查了也没用,那用ci的机制安全吗?好多人说只有预编译机制才安全
发表于 2016-7-4 11:14:42 | 显示全部楼层
hbualong 发表于 2016-7-4 10:51
我查了也没用,那用ci的机制安全吗?好多人说只有预编译机制才安全

防 SQL 注入很简单,就是转义就好了,用不着什么高深的技术。。。
发表于 2018-3-7 12:36:36 | 显示全部楼层
关于怎么防止SQL注入,详情请见
https://codeigniter.org.cn/user_guide/libraries/input.html,http://codeigniter.org.cn/user_guide/database/query_builder.html
且尽量使用CodeIgniter官方内置的函数
还有http://blog.csdn.net/u011721501/article/details/44787963,https://www.cnblogs.com/JeromeZ/p/7890977.html,http://www.cnblogs.com/JeromeZ/p/7890977.html

本版积分规则