У меня есть следующие таблицы в моей базе данных:
- Студент (student_id, электронная почта, имя,...)
- Курс (course_id, имя_курса,...)
- Зачисление (student_id, course_id, отметки,...)
Я хочу реализовать эту функциональность:
- Когда администратор хочет найти список всех учащихся в определенном городе, список отображается в виде таблицы HTML.
Это можно реализовать, просто запросив таблицу учеников.
- Когда администратор нажимает на любую строку (из таблицы, которую мы отобразили в 1.), администратор должен увидеть список всех курсов, в которые участвовал студент.
Мой вопрос: как мне это реализовать?
Я могу думать о следующих путях:
Способ 1:
qaru.site/questions/14044305/... Мне нужно каким-то образом определить, какая строка была нажата, для этого я могу передать student_id также в таблице в результате для 1 (список отображения всего ученика), но поскольку student_id не передает никакой информации администратору об ученике, я могу просто скрыть его в data-*
<tr>
или в <a href=/enrollment/${student_id}>
чтобы я мог использовать это, чтобы определить, какую строку админ нажал. Некоторые из моих друзей сказали мне, что я не должен раскрывать суррогатный ключ, это плохо для безопасности. Так можно ли каким-либо образом связать этот student_id с табличной строкой, но скрыть от пользователя, или это нормально, чтобы предоставить суррогатное ключевое содержание пользователю?
Способ 2:
Я могу создать временную таблицу, содержащую всех студентов из определенного города в БД, и назначить ему идентификатор строки. Теперь в результате я могу добавить этот идентификатор строки для каждой строки в атрибут data- *. Этот идентификатор строки не передает никакой информации о том, что является фактическим student_id, и я могу использовать этот идентификатор строки для запроса временной таблицы, чтобы получить фактический student_id, который я могу использовать для поиска в таблице регистрации. Теперь мне нужно удалить эту временную таблицу, когда пользователь перейдет от текущей страницы (перейдите к другой функции), теперь как мне определить, когда пользователь отошел от этой страницы?
Я хочу понять, какую проблему безопасности я могу получить, если я предоставил суррогатный ключ пользователю?
Никаких проблем с безопасностью как таковых, если вы выставляете student_id
но с бизнес-точки зрения это не очень приемлемо.
Если эти таблицы просматриваются только администраторами, то это не проблема в любом случае.
Если они видны даже гостем, то лучше не выставлять student_id
. Не для безопасности вашей базы данных, а для безопасности вашего бизнеса. Это может показать вашу силу и слабость.
Вместо этого вы можете использовать student_registration_no
. Это может быть медленным, учитывая запись VARCHAR
, но не определяемую по-человечески.
https://app.asana.com/0/63...18/board
но я не уверена, является это суррогатным ключом или нет