KO3 / Kohana3:在使用值()使用ORM保存到db之前,我们如何转义引号(双引号和单引号)?

时间:2010-08-17 23:15:55

标签: php database kohana escaping

我允许用户提交问题,他们应该能够在标题中使用单引号。 目前,如果标题包含单引号,则会正确提交。 $question->values($post_data); $question->save();

关于如何设置Kohana以逃避单引号/自动逃避我的信息的任何想法?我想避免每次输入时都添加addslashes()和removelashes()......

非常感谢,SO社区! (这个问题在http://forum.kohanaframework.org/comments.php?DiscussionID=6525

上转发

2 个答案:

答案 0 :(得分:2)

实际上,你根本不应该使用addslashes()来转义DB值。特别是在Kohana中,因为值在被保存时被“转义”(例如你给出的是ORM,你总是可以搞乱自定义数据库查询来获取MySQL注入/破解查询)。

如果您不希望某些内容被转义,请将其包装在DB::expr()中(因此它将返回一个Database_Expression实例,该实例不会自动转义)。

要手动转义值,请使用Database::quote()(非静态,通过数据库对象调用它,例如$db->quote($value))。

答案 1 :(得分:0)

但是! Kohana的反引号(`)有问题。这是系统的符号。

            elseif(preg_match('/\`/', $value))//if a backtick
            {
                return str_replace('\'', '', $value);//'value'=>value!!! 
            }

    return $this->escape($value);