【问题标题】:What is the recommended way of attaching unique ID into HTML table rows?将唯一 ID 附加到 HTML 表格行中的推荐方法是什么?
【发布时间】:2015-03-28 05:29:22
【问题描述】:

我们有一个 JSP 页面,它有一个如下表

我们使用 JDBC 查询将数据加载到此表中。现在,请考虑以下内容。

  1. 每一行显示一个人的数据。
  2. 每个人都有一个唯一的 ID,称为 idPerson

现在,我们需要跟踪哪一行包含属于哪个人的数据。为此,我们必须以某种方式将idPerson“附加”到行。我们找到了以下方法。

  1. 为每一行创建一个“隐藏文本框”,并将idPerson 设置为其valueid 属性。

但不确定这种方法有多安全,或者是否有人可以简单地从浏览器编辑 HTML 并入侵。

推荐的方法是什么?

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    您的方法可以更改为使用适当的隐藏字段:<input type="hidden />。现在,您关心的是安全

    不确定这种方法有多安全,或者是否有人可以简单地从浏览器编辑 HTML 并入侵

    这个没有上下文的 id 对攻击者来说是无用的。想一想:id=1 的真正价值是什么?你不能用这个做任何有价值的事情。您可以在 Web 应用程序的其他部分添加安全性:

    • 使用 https 保护客户端和服务器之间的通信。
    • 验证用户是否已通过身份验证并有权访问此视图。
    • 验证用户是否有权修改正在显示的字段。
    • 验证用户是否有权发送正在发送到服务器的字段的数据。
    • 等等……

    除此之外,这样做没有问题。

    【讨论】:

    • 感谢您的回复。一旦点击了一个人的行或姓名,我们如何检索这个值?目前我们考虑添加另一列,添加一个按钮并将isPerson 附加到按钮id 中。请问有什么办法吗?
    • 在查询字符串中发送 id,例如<a href="${request.contextPath}/path/to/your/editPersonServlet?id=${personId}">Edit</a>
    • 谢谢。那么我们可以从 Servlet 会话中获取 personId 吗?喜欢request.getParameter("personId");
    • 这是请求参数,不是会话。似乎您有一个更大的问题:了解 JSP 和 Servlet 的工作原理。但是要回答您的问题:是的,可以。此外,您应该处理id 无法解析为intint 值在数据库中不存在的情况。
    • 是的,请求参数,而不是会话。对不起。我们稍后将其添加到会话中...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2014-10-05
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    相关资源
    最近更新 更多