我允许我的用户收藏更新或论坛主题。因此,当用户尝试收藏其中之一时,我将通过Ajax 2发送东西,其中item_id(更新或主题)为id(例如1321313213),其类型(“ update”或“ topic”)为字符串。
但是,可以说有人尝试使用ID不变但喜欢的更新,但类型更改为“主题”(通过Firebug或其他方法)…
由于此组合不正确,因此不应进行此操作…由于该ID可能在两个表中共存,我如何确保发送的item_id是更新或主题???
当前解决方案:
创建一个隐藏的输入元素,并添加5个随机字符(a-zA-Z0-9)和md5类型名称(更新或主题)作为值
喜欢:
$random_str = $this->my_model->generateRandomString(5); <input type="hidden" value="<?php echo $random_str.md5("update"); ?>" id="type" />
因此,当我尝试验证数据以检查它是否为更新或主题时,我将类型拆分为前5个字符,然后再检查是否对以后的字符进行了md5哈希更新或主题并继续验证
我希望得到一些帮助,以防这种情况也可以更改。
您的服务器端脚本(PHP)必须始终假定它正在获取虚假数据。切勿仅依靠javascript来处理任何清理/验证。
如果您的JavaScript可以确定作业是“更新”还是“主题”,那么我确定您的PHP也可以做到。可能使用更多的数据库查询或类似的查询,但这就是您要付出的代价。