如何通过应用程序清理Cakephp3中的用户输入

时间:2018-03-02 11:37:37

标签: cakephp sanitize

在我们的 Cakephp3 应用程序中,用户正在输入一些带撇号的文本,它应该被反斜杠或使用mysql_real_escape_string()我们应该处理以覆盖投入的错误站点。

此修复应该在一个uniq地方完成,而不是在所有地方都要小心。

最好的方法是什么? 感谢

2 个答案:

答案 0 :(得分:2)

也许我重新发明了轮子,但是蛋糕提供了正确保存和显示用户试图注入的任何数据的方法#34;

在琐碎的情况下,如果用户想将他的昵称保存为105; DROP TABLE users<script>location.href="pornhub"</script> - 您应该允许他使用该昵称,如果您使用标准型号 - 那就没办法了注入任何东西。当您尝试在布局中显示用户数据时,只需使用h($user->nickname)

答案 1 :(得分:0)

我建议你在马歇尔之前把str_replace放在你的桌子上。

如果所有表格都需要这样做,我建议您将之前的马歇尔放在Table.php并将其扩展到其他表格中

它应该是这样的:

在table.php:

public function beforeMarshal(Event $event, ArrayObject $data, 
ArrayObject $options)
{
    foreach ($data as $key => $value) {
        if (is_string($value)) {
            $data[$key] = str_replace("'","`",$value);
        }
    }
}

在其他表格中:

class YourTableNameTable extends Table

阅读以下内容:https://book.cakephp.org/3.0/en/orm/saving-data.html#modifying-request-data-before-building-entities