我目前正在申请一个评论系统。这样控制器知道评论与widget
有关(每页上有几个widget
)我作为表格帖子的一部分通过$widget_id
。
然而,这可能很容易被DOM攻击,允许用户将评论发布到他们想要的任何小部件。用户ID更容易处理,因为它是会话的一部分。
是否有更安全的方法来实现同样的目标?在这种情况下可以使用闪存数据吗?我发现的所有解决方案都涉及将id传递给隐藏字段,但这绝不是安全的。
答案 0 :(得分:1)
尽管默默无闻是一个坏主意,但理论上你可以加密表单数据并将其称为无害的:
<input type="hidden" name="theme_modifier" value="<?php echo $this->encrypt->encode('widget_name'); ?>">
至少通过这种方式,攻击者将更难以猜测预期值应该是多少。特别是因为CI使用mcrypt,这意味着即使未加密的值相同,该值也会每次都改变。
答案 1 :(得分:0)
有一种简单的方法。不要在html中将id传递给隐藏字段
只需将其保存在会话中。然后,您可能需要加载与该用户相关的页面
做控制器中的所有东西。然后加载应该允许用户使用的页面
例如编辑页面。然后当用户保存一些数据时检查当前登录的
具有会话的用户并检查用户是否具有编辑权限,如果为true则继续。