CodeIngiter SQL转义Regexp查询

时间:2018-05-14 21:10:07

标签: sql codeigniter escaping

我使用CodeIgniter查询sql数据库。我需要在where子句中使用REGEXP,并且我已经读过它可以使用CodeIgniter Active Record完成,但我无法使其工作。即使在示例中,我看到活动记录$ this-> db-> where()将false作为第3个参数,这意味着数据不会被转义。我使用的解决方案就像是

$this->db->query("SELECT column FROM table WHERE column REGEXP 'pattern'");

问题是模式包含一些用户输入,例如,如果某人使用短语&#34执行数据库搜索;找到我"模式将类似于

"find[\s\t\n]*me"

这里的潜力是输入一些恶意代码而不是单词"找到我"。我怎么能逃脱这个字符串?我试过了

$this->db->escape( "find[\s\t\n]*me" );

产生错误,因为所有反斜杠都被转义,这是我不想要的。我试过了

$a = $this->db->escape( "find" );
$b = $this->db->escape( "me" )
$pattern = $a . "[\s\n\t]*" . $b;
$this->db->query( "SELECT column FROM table WHERE column REGEXP $pattern");

但这也会出错。我是否甚至需要担心逃避这一点,或者我应该在JS方面进行一些验证以确保没有恶意插入?

由于

0 个答案:

没有答案