繁体   English   中英

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

[英]How to maintain security when using JQuery for inline page editing (edit-in-place)

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

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

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

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

当然,即使它们可以启用javascript也并不意味着服务器会接受编辑,因为它会执行自己的验证。 只是我希望用户如果没有正确的登录凭据,甚至没有选择甚至可以直观地编辑页面。

难道这只是预期的折中,因为基于javascript的控件可能对用户可见(他们当然是在恶意修改页面),但取决于其他变量,它们可能无法正常工作?

从逻辑/概念角度讲,我坚持这样做。

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

  • 确定哪些内容可以标识我的客户登录名,并且在客户端也可以与我一起使用。 例如他的ID,会话ID,Cookie等。
  • 创建一种加密技术。
  • 将其写入隐藏字段。
  • 在客户端进行相同的计算,然后匹配结果。
  • 如果该值等于隐藏字段的值,则您具有真实用户。 否则没有。 并且可以在很小的间隔后反复进行此操作。

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

对于内联编辑,必须进行一些初始化或一些脚本,以使表单字段可编辑。 因此请根据情况包括这些脚本。 表格范例

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

如果不满足条件,则将不包含脚本,因此表单字段将不可编辑。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM