以下是我的代码摘要:
我的网站基本上只循环某个表的所有行的内容;但有时,我需要从某一行获取个人ID。隐藏的输入有效,但我知道这将是一个很大的安全负担。从隐藏输入中获取ID后,我需要将其插入另一个表中。黑客可以简单地改变隐藏输入的值并入侵系统。我找不到在服务器端验证的方法。加密可能会有所帮助,但我认为黑客总能找到解密它的方法。有没有人知道如何使这更安全?
更新 对于我的网站有点模糊,我很抱歉。基本上,它只是一个类似于Facebook的喜欢和不喜欢的系统。我的表的结构为:id,user_that_liked_id,post_id。当用户喜欢帖子时,然后将帖子的ID插入到post_id中,并且将喜欢该帖子的用户的ID插入到user_that_liked_id中。这里存在安全问题,因为用户可能只是更改隐藏输入的ID,这将允许他们插入各种非意义。请参考下面的代码。
HTML(摘要):
<div class="thumbsup mini_thumbs" name="mini_thumbs">
<input type="hidden" value="<?php echo $row->id; ?>" id="post_id"/>
<input class="up" name="thumbsup_vote" type="submit" value="1" title="Vote up" onclick = "liked(this)" />
<input class="down" name="thumbsup_vote" type="submit" value="0" title="Vote down" onclick = "disliked(this)" />
</div>
JavaScript / jQuery(摘要)
function liked(e) {
var post_id = $(e).siblings("#post_id").val();
alert(post_id);
}
答案 0 :(得分:1)
如果您将其提供给客户,则用户可以更改它。
如果您无法将其提交给客户,那么在提交表单时,您需要检查用户是否已验证(即您知道有哪些用户,例如因为他们输入了密码)和授权(即他们被允许做任何要求的事情)。
您如何确定授权完全取决于您的业务规则(您尚未向我们解释)。这可能是这样的:
IF the id belongs to an entry created by the user
OR IF the user is an admin
显然,这需要您记录哪些用户创建了哪些条目或哪些用户是管理员。
这里存在安全问题,因为用户可能只是更改隐藏输入的ID,这将允许他们插入各种无意义。
我能想象的唯一一种废话可能是多次喜欢帖子,或喜欢用户看不到的帖子。这只是回到授权。如果请求是重复的,或者如果用户不允许查看他们试图投票的帖子,则拒绝该请求。
答案 1 :(得分:0)
假设您在服务器端具有良好的身份验证和验证,则在html中显示ID值很好。
例如,我假设您的代码是更新博客上的帖子或类似的东西?用户在更新时是否必须登录?您是否检查当前登录用户是否有权更新该特定帖子(IE通过设置用户所在的用户组有权编辑帖子或编辑所有帖子,或帖子的作者是登录用户) )。
您可以在会话中保存记录ID以将其隐藏起来,但黑客仍然可以尝试会话劫持。
这完全取决于你的后端安全性。