mysql - 用户单击表格行时显示详细信息
问题描述
我的数据库中有以下表格:
- 学生(student_id,电子邮件,姓名,...)
- 课程(课程 ID,课程名称,...)
- 注册(student_id、course_id、分数、...)
我想实现这个功能:
- 当管理员想要搜索特定城市的所有学生列表时,列表显示为 HTML 表格。
这可以通过查询学生表来实现。
- 当管理员单击任何行时(从我们在 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。现在我需要在用户离开当前页面(转到其他功能)时删除这个临时表,现在我应该如何检测用户何时离开这个页面?
我想了解如果我向用户公开代理密钥会出现什么安全问题?
解决方案
如果您公开,则没有安全问题,student_id
但从业务角度来看,这是不太可接受的。
如果这些表仅由管理员查看,那么无论哪种方式都不是问题。
如果即使是客人也可以看到这些内容,那么最好不要暴露student_id
. 不是为了您的数据库的安全,而是为了您的业务的安全。它可能会暴露你的强项和弱点。
你可以student_registration_no
改用。考虑到一个条目,它可能会很慢,VARCHAR
但人类无法检测到。
推荐阅读
- php - 教义自定义类型,更新模式的问题
- google-analytics - Google Analytics 中的自定义维度显示 URL 而不是标签值
- c# - 如何在 C# 中使用具有多个参数的委托函数
- javascript - Puppeteer 为多个帐户保留登录 cookie
- google-apps-script - 日期时间使用 Google sheet API 转换为文本
- fluentd - Fluentd:如果整数字段的值小于 100,则过滤事件
- python - 根据条件将字典中的值分配给新列
- css - 如何避免在页面加载时使用 CSS grid-template-columns 进行布局转换?
- c++ - Visual Studio C++ 在 main 函数结束时触发断点
- github - 找不到从 GitHub webhook 响应创建 SHA256 的格式