首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐藏表单的安全解决方案

隐藏表单的安全解决方案
EN

Stack Overflow用户
提问于 2010-12-10 02:37:04
回答 2查看 116关注 0票数 0

我有这样的代码:

代码语言:javascript
复制
<? if ($cur_post['poster_id'] == $forum_user['id']) { ?>
  <div class="txt-box textarea required">
  <label for="fld<?php echo ++ $forum_page['fld_count'] ?>"><span><?php echo $lang_post['Write message'] ?>  <em><?php echo $lang_common['Required'] ?></em></span></label>
  <div class="txt-input"><span class="fld-input"><textarea id="fld<?php echo $forum_page['fld_count'] ?>" name="req_message" rows="14" cols="95"><?php echo forum_htmlencode(isset($_POST['req_message']) ? $message : $cur_post['message']) ?></textarea></span></div>
 </div>
</div>
  <? }
else { ?>

<? } ?>  

我需要一个更安全的解决方案来隐藏表单,因为目前使用此代码时,我按下提交(作为管理员),它告诉我必须输入书面消息的值。我可以使用ELSE位下面的隐藏表单来绕过它-但是有任何知识的人可以使用Inspect元素或Firebug来绕过它,然后发布该值。

我需要一个更安全的解决方案,这样人们就不能编辑隐藏的表单。我是否以某种方式将旧的变量发布到表单?

它用于PunBB页面(edit.php):http://punbb.informer.com/svn/punbb/tags/punbb-1.3.3/edit.php (原始)。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2010-12-10 02:47:55

这始终是一个有趣的问题。

我建议使用表单+页面调用所特有的索引将私有数据存储在用户$_SESSION中。我刚刚在工作中遇到了一个类似的问题,我开始通过隐藏的表单字段传递太多的私有数据。现在,我简单地传递一个惟一的id,我使用它来索引会话中特定的私有表单数据。

这不是一个100%的解决方案。将数据存储在会话中,而不是存储在表单中,这意味着过时的表单可能会超时(例如,如果会话被终止/超时),但我认为这是值得的。

票数 0
EN

Stack Overflow用户

发布于 2010-12-10 02:52:52

我不完全确定我是否理解了这个问题。你是想控制表单的呈现方式,还是想弄清楚如何在表单中添加“敏感”数据?

首先,如果您担心在页面上呈现表单的哪些部分,那么只有在if子句中的条件不为真的情况下,才会呈现else子句中的所有内容。else并没有“隐藏”表单的一部分。

其次,没有“安全”客户端表单这回事。一般来说,您无法控制将哪些数据提交到您的应用程序,任何人都可以提交任何帖子或获取他们想要的数据。相反,您必须在服务器端通过适当的过滤来处理它,以确保用户有适当的授权来执行他们试图执行的操作。听起来您需要在处理表单时要求用户标识为管理员(很可能是通过会话数据)。

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

https://stackoverflow.com/questions/4401827

复制
相关文章

相似问题

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