我允许用户提交问题,他们应该能够在标题中使用单引号。
目前,如果标题包含单引号,则会正确提交。
$question->values($post_data); $question->save();
关于如何设置Kohana以逃避单引号/自动逃避我的信息的任何想法?我想避免每次输入时都添加addslashes()和removelashes()......
非常感谢,SO社区! (这个问题在http://forum.kohanaframework.org/comments.php?DiscussionID=6525)
上转发答案 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);