使用JQuery进行内联页面编辑时如何保持安全性(就地编辑)

时间:2014-09-02 11:19:47

标签: javascript jquery coldfusion coldfusion-10

我希望用户在登录后可以在个人资料页面上编辑项目(例如在Facebook上)。让我们将此页面称为profile.cfm

我很困惑如何允许内联编辑页面(即,用表单输入替换页面元素以便用户可以编辑内容)只有当用户登录并且他们的凭据与页面的凭据匹配时想要编辑。

传统上,我会有一个单独的页面来编辑profile-edit.cfm这样的个人资料。在此页面上,我将检查他们要编辑的配置文件的ID是否与存储在其Session变量中的ID相同。如果一切都匹配,那么页面将显示。如果没有,它将失败。

然而,使用JS内联编辑,没有单独的编辑页面来处理安全检查。那么只有在正确的用户登录后才能启用JS编辑功能?我不希望用户修改其他人的个人资料。简单地禁用/启用基于登录凭据的内联编辑Javascript代码是不够的,因为可以使用Firebug等轻松地重新启用它。

当然即使他们可以启用javascript也不意味着服务器会接受编辑,因为它自己进行验证。只是我宁愿用户在没有正确的登录凭据的情况下也无法直观地编辑页面。

这只是基于javascript控件的预期权衡,用户可以看到它们(当然是恶意修改页面)根据其他变量无法正常工作吗?

我从逻辑/概念角度坚持这一点。

2 个答案:

答案 0 :(得分:0)

如果我是你。我使用ASP.NET C#来开发Web应用程序。如果我希望使用JQuery在客户端完成所有工作,Javascript我会执行以下操作:

  • 确定哪些内容标识了我的客户端登录信息,我也在客户端提供了这些信息。例如他的ID,会话ID,Cookie等
  • 创建加密技术。
  • 将其写入隐藏字段。
  • 在客户端计算相同内容,然后匹配结果。
  • 如果它等于隐藏字段的值,则表示您拥有真实用户。否则不是。这可以在一小段时间后反复进行。

实施例: 考虑一下你有你的个人资料ID,用户名和会话ID。因此,您可以创建一个类似于用户名+配置文件ID +会话ID的模式,并创建该字符串的哈希值。 然后在客户端创建相同的内容。然后验证它。希望有所帮助。

答案 1 :(得分:-1)

对于内联编辑,必须有一些初始化或一些脚本,使表单字段可编辑。所以根据条件包含这些脚本。表单示例

If(session[ID] == Profile ID){
   <script type="text">
       Add all your scripts which will allow inline editing.
   </script>
}

如果条件不符合,则不会包含脚本,因此表单字段将不可编辑。 希望这会有所帮助。