安全地将ID从视图传递到控制器(CodeIgniter)

时间:2013-10-31 11:29:38

标签: php codeigniter

我目前正在申请一个评论系统。这样控制器知道评论与widget有关(每页上有几个widget)我作为表格帖子的一部分通过$widget_id

然而,这可能很容易被DOM攻击,允许用户将评论发布到他们想要的任何小部件。用户ID更容易处理,因为它是会话的一部分。

是否有更安全的方法来实现同样的目标?在这种情况下可以使用闪存数据吗?我发现的所有解决方案都涉及将id传递给隐藏字段,但这绝不是安全的。

2 个答案:

答案 0 :(得分:1)

尽管默默无闻是一个坏主意,但理论上你可以加密表单数据并将其称为无害的:

<input type="hidden" name="theme_modifier" value="<?php echo $this->encrypt->encode('widget_name'); ?>">

至少通过这种方式,攻击者将更难以猜测预期值应该是多少。特别是因为CI使用mcrypt,这意味着即使未加密的值相同,该值也会每次都改变。

答案 1 :(得分:0)

有一种简单的方法。不要在html中将id传递给隐藏字段 只需将其保存在会话中。然后,您可能需要加载与该用户相关的页面 做控制器中的所有东西。然后加载应该允许用户使用的页面 例如编辑页面。然后当用户保存一些数据时检查当前登录的
具有会话的用户并检查用户是否具有编辑权限,如果为true则继续。