在我们的 Cakephp3 应用程序中,用户正在输入一些带撇号的文本,它应该被反斜杠或使用mysql_real_escape_string()我们应该处理以覆盖投入的错误站点。
此修复应该在一个uniq地方完成,而不是在所有地方都要小心。
最好的方法是什么? 感谢
答案 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