据我了解,使用 $this->db->insert() 转义值:
http://codeigniter.com/user_guide/database/active_record.html#insert
Note: All values are escaped automatically producing safer queries.
但是当我查看 mysql 时,我的输入没有被转义,是否由于某种原因删除了一些如何?
担心这里的sql注入,这就是我问的原因。
据我了解,使用 $this->db->insert() 转义值:
http://codeigniter.com/user_guide/database/active_record.html#insert
Note: All values are escaped automatically producing safer queries.
但是当我查看 mysql 时,我的输入没有被转义,是否由于某种原因删除了一些如何?
担心这里的sql注入,这就是我问的原因。
当您为 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_string或添加斜杠传递。因此,我们可以说考虑到了针对 SQL 注入的安全措施。
通过“逃脱”,他们的意思是替换这个:
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
另外,检查: