如何在不使用隐藏字段的情况下将变量传递给表单提交上的CFC?

时间:2014-06-20 20:55:12

标签: coldfusion

使用:ColdFusion 10,JQuery 1.9,IIS

我制作了一个CFC(允许远程访问),它处理将注释插入数据库,无论它们是新注释还是对现有注释的回复。

我有一个表格,当你想发表评论时会提交给这个CFC。

目前我正在传递(作为隐藏字段)将变量传递给CFC,以告诉它要插入的注释的各种内容:例如:注释的User(收件人ID)和引用的CommentID(如果是回复)。这些值会发生很大变化,因为有时用户会回复其他用户的评论。

我不想在我的表单中发送隐藏变量,因为它很容易被恶意攻击者修改。如何使用表单变量(例如注释主体)发送主表单信息,但仅使用ColdFusion传递敏感变量,以便黑客不能操纵它?

我可以做的一件事是回到页面本身,然后使用<cfinvoke>来调用CFC并传入参数。我会在调用中而不是在Form中设置参数。这是正确的方法吗?

2 个答案:

答案 0 :(得分:4)

恶意用户无法轻易修改的唯一位置是Session

将敏感内容保留在Session中,并确保登录用户有权执行他们请求的操作(例如,只能删除自己的内容,而不是其他内容)

答案 1 :(得分:1)

关于,“我能做的一件事就是提交回页面本身然后用来调用CFC并传入参数。我会在调用中而不是在Form中设置参数。这是正确的吗这样做的方法?“

我认为这比提交cfc要好得多,这就是你说你现在正在做的事情。这个主题的微小变化是:

  • 提交到另一个调用cfc方法的页面。
  • 忘记cfc并将数据库调用放入.cfm页面。在 事实上,如果cfc只包含插入查询,则不包含 在其他地方使用,这是不必要的。

就不使用隐藏表单字段而言,您可能遇到麻烦。用户信息可以按照Henry的建议存储在会话范围内,但收件人信息更难保护。您可以使收件人ID成为表单字段名称的一部分。然后为了保护自己免受neer做井,在cgi.http_referrer变量上添加另一个检查。