首页 > 解决方案 > 用户单击表格行时显示详细信息

问题描述

我的数据库中有以下表格:

  • 学生(student_id,电子邮件,姓名,...)
  • 课程(课程 ID,课程名称,...)
  • 注册(student_id、course_id、分数、...)


我想实现这个功能:

  1. 当管理员想要搜索特定城市的所有学生列表时,列表显示为 HTML 表格。

这可以通过查询学生表来实现。

  1. 当管理员单击任何行时(从我们在 1 中显示的表中),管理员应该会看到学生注册的所有课程的列表。

我的问题是我应该如何实现这个?
我可以想到以下方法:
方式1:
https ://stackoverflow.com/a/45135144/3494107 我需要有一些方法来识别管理员点击了哪一行,为此我可以在结果表中传递student_id为 1 (显示所有学生的列表),但由于 student_id 没有向管理员传达有关学生的任何信息,我可以将其隐藏在data-*属性中<tr>或中,<a href=/enrollment/${student_id}>以便我可以使用它来识别管理员点击了哪一行。我的一些朋友告诉我,我不应该暴露代理密钥,这对安全性不利。那么有什么方法可以将这个 student_id 关联到表行但对用户隐藏,或者可以向用户公开代理键内容?
方式二:
我可以在数据库中创建一个包含来自特定城市的所有学生的临时表,并将行 ID 分配给它。现在结果我可以将每一行的这个行 ID 添加到 data-* 属性中。此行 ID 不传达有关实际 student_id 的任何信息,我可以使用此行 ID 查询临时表以获取可用于在注册表中搜索的实际 student_id。现在我需要在用户离开当前页面(转到其他功能)时删除这个临时表,现在我应该如何检测用户何时离开这个页面?

我想了解如果我向用户公开代理密钥会出现什么安全问题?

标签: mysqlnode.jshtmlsecurityweb

解决方案


如果您公开,则没有安全问题,student_id但从业务角度来看,这是不太可接受的。

如果这些表仅由管理员查看,那么无论哪种方式都不是问题。

如果即使是客人也可以看到这些内容,那么最好不要暴露student_id. 不是为了您的数据库的安全,而是为了您的业务的安全。它可能会暴露你的强项和弱点。

你可以student_registration_no改用。考虑到一个条目,它可能会很慢,VARCHAR但人类无法检测到。


推荐阅读