hbualong 发表于 2016-5-19 11:18:25

ci是怎么样防sql注入的

ci里面怎么样写才能调用pdo的预处理机制防止sql注入?新手求助

yuzhigang5460 发表于 2016-5-23 17:09:33

hbualong 发表于 2016-5-23 10:32
其实我只是想研究一下ci的防sql注入机制,,看看怎么写是安全的,怎么样有漏洞 ...

CI并没有使用预编译机制。
$mysqli = new mysqli("localhost", "root", "root", 'demo');
        //使用问号替代变量位置
        $sql = "SELECT uid,username FROM user WHERE username=?";
        $stmt = $mysqli->prepare($sql);
        //绑定变量
        $stmt->bind_param("s", $username);
        $stmt->execute();
        $stmt->bind_result($uid, $username);
        while ($stmt->fetch()) {
          $row = array();
          $row['uid'] = $uid;
          $row['username'] = $username;
          $userinfo[] = $row;
        }
CI使用的过滤方式是使用原生的过滤方法:
protected function _escape_str($str)
        {
                return $this->conn_id->real_escape_string($str);
        }

Hex 发表于 2016-5-20 14:14:07

用 CI 的 Query Builder 就可以防 SQL 注入,不用 PDO 的预处理机制。
其实防 SQL 注入很简单,做好转义就行了,最重要的其实不是技术,而是安全意识。

hbualong 发表于 2016-5-19 11:24:24

抢个沙发,,坐等大神解答

smartweb 发表于 2016-5-19 12:03:57

http://codeigniter.org.cn/user_guide/libraries/input.html

$this->input->post(array('field1', 'field2'), TRUE);

hbualong 发表于 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预处理机制

Closer 发表于 2016-5-19 14:05:16

hbualong 发表于 2016-5-19 12:54
这是xss攻击过滤吧,,,,我问的是sql注入,是否实现了pdo预处理机制
CI 的 AR 類已提供防 SQL 注入
CI 手冊 - Active Record

至於你提到的 PDO 預處理機制
也許要看源碼才能清楚

hbualong 发表于 2016-5-19 16:01:12

Closer 发表于 2016-5-19 14:05
CI 的 AR 類已提供防 SQL 注入
CI 手冊 - Active Record



我查看源码了,没找到用到预处理机制,求大神指点。

hbualong 发表于 2016-5-23 10:32:41

Hex 发表于 2016-5-20 14:14
用 CI 的 Query Builder 就可以防 SQL 注入,不用 PDO 的预处理机制。
其实防 SQL 注入很简单,做好转义就 ...

其实我只是想研究一下ci的防sql注入机制,,看看怎么写是安全的,怎么样有漏洞

v阿杰 发表于 2016-5-23 13:16:26

主动防止注入也就是做好过滤 什么的,

Hex 发表于 2016-5-23 16:53:54

hbualong 发表于 2016-5-23 10:32
其实我只是想研究一下ci的防sql注入机制,,看看怎么写是安全的,怎么样有漏洞 ...

简单说就是用 Query Builder 就是安全的。
页: [1] 2
查看完整版本: ci是怎么样防sql注入的