【问题标题】:codeigniter escaping using Active Record Class for sql injections使用 Active Record 类进行 sql 注入的 codeigniter 转义
【发布时间】:2012-06-24 03:09:24
【问题描述】:

据我了解,使用 $this->db->insert() 会转义值:

http://codeigniter.com/user_guide/database/active_record.html#insert

Note: All values are escaped automatically producing safer queries.

但是当我查看mysql时,我的输入没有被转义,是不是因为某种原因删除了一些?

担心这里的sql注入,这就是我问的原因。

【问题讨论】:

    标签: php mysql codeigniter insert escaping


    【解决方案1】:

    当您为 SQL 语句转义字符串时,这并不一定意味着您稍后查看数据时应该看到添加的反斜杠。这意味着某些字符将被转义,SQL 语句将运行而不会出现任何错误。尝试使用 mysql_real_escape_string

    插入数据

    线路:557 https://github.com/EllisLab/CodeIgniter/blob/develop/system/core/Input.php

    if ( ! is_php('5.4') && get_magic_quotes_gpc())
    {
        $str = stripslashes($str);
    }
    

    然后

    线路:285 https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/drivers/mysql/mysql_driver.php

    $str = is_resource($this->conn_id) ? mysql_real_escape_string($str, $this->conn_id) : addslashes($str);
    

    字符串通过 mysql_real_escape_stringaddslashes 传递。因此,我们可以说考虑到了针对 SQL 注入的安全措施。

    【讨论】:

    • 是的 mysql_real_escape_string 和 htmlspecialchars 转义值并使用 (\) 将它们插入数据库。但我想知道 codeigniter 是否确实逃脱了它但没有在数据库中显示它。
    • 如果是这种情况,您必须运行早于 5.3 的 PHP 版本并启用 magic_quotes_gpc 这可能由 CodeIgniter 考虑并在之前通过 stripslashes调用 mysql_real_escape_string.
    • 我很好奇并研究了 CodeIgniter。事实证明,我的猜测是正确的。现在编辑帖子。
    • 是的,您对旧版本的看法是正确的。我关闭了magic_quotes_gpc,仍然有同样的问题,对你的编辑感兴趣:)
    • 是的,谢谢,我现在也在看。当使用 php 5.4 使用 $this->db->insert() 将没有值的值插入数据库时​​,结果是否相同?
    【解决方案2】:

    “转义”是指替换它:

    SELECT * FROM table1 WHERE field1 LIKE "some string with " quotes"
    

    为此:

    SELECT * FROM table1 WHERE field1 LIKE "some string with \" quotes"
    

    如果您想确保在保存之前对字符串进行转义,请考虑使用$this->db->escape* 方法:http://codeigniter.com/user_guide/database/queries.html

    另外,检查:

    【讨论】:

    • 是的,我遇到的唯一问题是,当我实际上将值插入数据库时​​,我看不到转义版本。我更喜欢这样。只是寻找确认它实际上已经逃脱,因此不会发生 sql 注入。我一直在这里读到你应该转义输出,而不是输入。对于 xss_clean,这里有些人反对它,我希望人们提交诸如
    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 2012-06-05
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    相关资源
    最近更新 更多