用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8095|回复: 13
收起左侧

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

[复制链接]
发表于 2016-5-19 11:18:25 | 显示全部楼层 |阅读模式
ci里面怎么样写才能调用pdo的预处理机制防止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-5-20 14:14:07 | 显示全部楼层
用 CI 的 Query Builder 就可以防 SQL 注入,不用 PDO 的预处理机制。
其实防 SQL 注入很简单,做好转义就行了,最重要的其实不是技术,而是安全意识。
 楼主| 发表于 2016-5-19 11:24:24 | 显示全部楼层
抢个沙发,,坐等大神解答
发表于 2016-5-19 12:03:57 | 显示全部楼层
http://codeigniter.org.cn/user_guide/libraries/input.html

$this->input->post(array('field1', 'field2'), TRUE);
 楼主| 发表于 2016-5-19 12:54:06 | 显示全部楼层
smartweb 发表于 2016-5-19 12:03
http://codeigniter.org.cn/user_guide/libraries/input.html

$this->input->post(array('field1', 'field ...

这是xss攻击过滤吧,,,,我问的是sql注入,是否实现了pdo预处理机制
发表于 2016-5-19 14:05:16 | 显示全部楼层
hbualong 发表于 2016-5-19 12:54
这是xss攻击过滤吧,,,,我问的是sql注入,是否实现了pdo预处理机制

CI 的 AR 類已提供防 SQL 注入
CI 手冊 - Active Record

至於你提到的 PDO 預處理機制
也許要看源碼才能清楚
 楼主| 发表于 2016-5-19 16:01:12 | 显示全部楼层
Closer 发表于 2016-5-19 14:05
CI 的 AR 類已提供防 SQL 注入
CI 手冊 - Active Record

我查看源码了,没找到用到预处理机制,求大神指点。
 楼主| 发表于 2016-5-23 10:32:41 | 显示全部楼层
Hex 发表于 2016-5-20 14:14
用 CI 的 Query Builder 就可以防 SQL 注入,不用 PDO 的预处理机制。
其实防 SQL 注入很简单,做好转义就 ...

其实我只是想研究一下ci的防sql注入机制,,看看怎么写是安全的,怎么样有漏洞
发表于 2016-5-23 13:16:26 | 显示全部楼层
主动防止注入也就是做好过滤 什么的,
发表于 2016-5-23 16:53:54 | 显示全部楼层
hbualong 发表于 2016-5-23 10:32
其实我只是想研究一下ci的防sql注入机制,,看看怎么写是安全的,怎么样有漏洞 ...

简单说就是用 Query Builder 就是安全的。

本版积分规则