首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >添加文章的ID作为隐藏输入而不确保它存在于服务器端被认为是不好的做法吗?

添加文章的ID作为隐藏输入而不确保它存在于服务器端被认为是不好的做法吗?
EN

Stack Overflow用户
提问于 2012-07-21 10:44:30
回答 2查看 166关注 0票数 0

假设我有以下表格:

  1. commentsc_id,英特尔,a_idbody
  2. articlestitle,英特尔,body

我有一个评论系统(类似于SO)。但当然,我必须提供文章的Id,有很多方法可以做到这一点。

因此,我采用了简单的方法,即使用文章的ID创建一个隐藏输入,如下所示:

<input type="hidden" name="article_id" value="1" />

然后简单地将其POSTed到服务器端。并使用MySQL插入到表中。但是,不好的用户不可能更改隐藏输入中的数据吗?

例如,如果他更改了隐藏的输入并放入了一个无效的ID,或者一篇不存在的文章,或者任何我真的不需要的东西。这是我应该考虑的事情吗?因为唯一会发生的事情就是无效的注释,仅此而已。因为我得到了所有整数输入的intval,所以我不怕任何类型的SQL注入。

底线:我是否真的应该关心无效评论,并发出额外的查询来检查文章是否首先存在,这将占用更多的资源,只是为了确保不会插入无效的无害评论。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-21 10:46:20

您应该始终检查以确保用户没有插入错误/无效的数据。

永远不要相信客户。更改隐藏值非常容易。

现在你应该在你的数据库中有foriegn key约束,这将在一定程度上保护你不受这种情况的影响,但是如果他们把文章id改成了有效的东西,但是他们可能不能访问(文章被锁定)你想要保护的东西而不是那个东西。

票数 1
EN

Stack Overflow用户

发布于 2012-07-21 10:50:20

用户可以更改数据的说法是100%正确的。底线是,客户端上的任何东西都可以由客户端修改(好的或坏的)。

我肯定会验证来自客户端的ID,不管你是如何使用它的。如果您设置了适当的外键关系,那么在技术上将无效it插入到数据库中应该会失败,但是假设您没有这样做,那么它可能会导致数据库中充满无效数据。

此外,如果您跟踪所有提交的“无效”if以及提交它们的用户,您可以(在将来)实现可以阻止/禁止用户发布评论的逻辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11589082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档