用户单击表行时显示详细信息

时间:2018-05-15 17:45:25

标签: mysql node.js html5 security web

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

  
      
  • 学生(student_id,电子邮件,姓名,......)
  •   
  • 课程(course_id,course_name,...)
  •   
  • 注册(student_id,course_id,marks,...)
  •   


我想实现此功能:

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

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

  
      
  1. 当管理员点击任何一行时(从我们在1中显示的表中)   然后管理员应该看到学生注册的所有课程的列表   英寸
  2.   

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

我想了解如果我向用户公开代理键,我可以拥有哪些安全问题?

1 个答案:

答案 0 :(得分:1)

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

如果这些表仅由管理员查看,则无论如何都不是问题。

如果客人甚至可以查看这些内容,那么最好不要公开student_id。不是为了数据库的安全性,而是为了您的业务的安全性。它可能会暴露你的力量和弱点。

您可以改用student_registration_no。它可能很慢,考虑到VARCHAR条目,但不是人类可检测到的。