gpt4 book ai didi

function - 如何避免codeigniter中的sql注入(inject)

转载 作者:行者123 更新时间:2023-12-03 08:52:53 32 4
gpt4 key购买 nike

在 CodeIgniter 中,如何避免 sql 注入(inject)?是否有任何方法可以在配置文件中设置以避免 sql 注入(inject)?我正在使用此代码来选择值:

$this->db->query("SELECT * FROM tablename WHERE var='$val1'");

这用于插入值:
$this->db->query("INSERT INTO  tablename (`var1`,`var2`) VALUES ('$val1','$val2')");

另一种用于从数据库中插入和选择值的方法是 CodeIgniter 的 insert()。和 get()方法。使用 CodeIgniter 的内置函数时是否有机会进行 sql 注入(inject)

最佳答案

CodeIgniter 的 Active Record方法会自动为您转义查询,以防止 sql 注入(inject)。

$this->db->select('*')->from('tablename')->where('var', $val1);
$this->db->get();

或者
$this->db->insert('tablename', array('var1'=>$val1, 'var2'=>$val2));

如果不想使用 Active Records,可以使用 query bindings以防注入(inject)。
$sql = 'SELECT * FROM tablename WHERE var = ?';
$this->db->query($sql, array($val1));

或者对于插入,您可以使用 insert_string() 方法。
$sql = $this->db->insert_string('tablename', array('var1'=>$val1, 'var2'=>$val2));
$this->db->query($sql);

还有 escape() 方法,如果您更喜欢运行自己的查询。
$val1 = $this->db->escape($val1);
$this->db->query("SELECT * FROM tablename WHERE var=$val1");

关于function - 如何避免codeigniter中的sql注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5857386/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com