根据我的理解,使用$ this-> db-> insert()转义值:
http://codeigniter.com/user_guide/database/active_record.html#insert
Note: All values are escaped automatically producing safer queries.
但是当我查看mysql时,我的输入没有被转义,是否由于某种原因删除了一些如何?
在这里担心sql注入,这就是我要问的原因。
答案 0 :(得分:2)
当您为SQL语句转义字符串时,它并不一定意味着您在稍后查看数据时应该看到添加了反斜杠。这意味着某些字符将被转义,SQL语句将运行而不会出现任何错误。尝试使用 mysql_real_escape_string
插入数据LINE:557 https://github.com/EllisLab/CodeIgniter/blob/develop/system/core/Input.php
if ( ! is_php('5.4') && get_magic_quotes_gpc()) { $str = stripslashes($str); }
然后
LINE: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 或 addslashes 传递。因此,我们可以说考虑了针对SQL注入的安全措施。
答案 1 :(得分:0)
BY“逃脱”意味着取代它:
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
另外,请检查: