Отображать детали, когда пользователь щелкает строку таблицы

0

У меня есть следующие таблицы в моей базе данных:

  • Студент (student_id, электронная почта, имя,...)
  • Курс (course_id, имя_курса,...)
  • Зачисление (student_id, course_id, отметки,...)


Я хочу реализовать эту функциональность:

  1. Когда администратор хочет найти список всех учащихся в определенном городе, список отображается в виде таблицы HTML.

Это можно реализовать, просто запросив таблицу учеников.

  1. Когда администратор нажимает на любую строку (из таблицы, которую мы отобразили в 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, который я могу использовать для поиска в таблице регистрации. Теперь мне нужно удалить эту временную таблицу, когда пользователь перейдет от текущей страницы (перейдите к другой функции), теперь как мне определить, когда пользователь отошел от этой страницы?

Я хочу понять, какую проблему безопасности я могу получить, если я предоставил суррогатный ключ пользователю?

Теги:
security
web

1 ответ

1
Лучший ответ

Никаких проблем с безопасностью как таковых, если вы выставляете student_id но с бизнес-точки зрения это не очень приемлемо.

Если эти таблицы просматриваются только администраторами, то это не проблема в любом случае.

Если они видны даже гостем, то лучше не выставлять student_id. Не для безопасности вашей базы данных, а для безопасности вашего бизнеса. Это может показать вашу силу и слабость.

Вместо этого вы можете использовать student_registration_no. Это может быть медленным, учитывая запись VARCHAR, но не определяемую по-человечески.

  • 0
    Можете ли вы уточнить, что вы имели в виду, когда говорили, что это может показать сильные и слабые стороны вашего бизнеса? Сценарий, который я дал, является гипотетическим. На самом деле я хотел внедрить услугу на основе подписки для клиента, например, asana.com или jira.com, где роль администратора клиента должна быть в состоянии видеть список проектов или список сотрудников, которые у них есть, и после нажатия на конкретного сотрудника они должны иметь возможность чтобы увидеть список всех задач по проекту или сотруднику. Я вижу, как Асана вставила идентификатор в ссылку https://app.asana.com/0/63...18/board но я не уверена, является это суррогатным ключом или нет
  • 0
    @LovelyGuyAnSh Под сильной и слабой стороной бизнеса я имел в виду, что на вашем сайте зарегистрировано 100 студентов, но вы рекламируете, поскольку там более 500 студентов, и вы можете легко обнаружить, что вы показываете некоторые ложные данные, просто пример. Безопасность здесь не так важна, поскольку хакер не будет зависеть от тех ценностей, которые вы показываете. Они будут напрямую использовать SQL-инъекции или другие атаки для извлечения необходимых значений из вашей базы данных. Идентификатор отображается не только на тех сайтах, которые вы упомянули, но и на самом сайте. Даже форум программного обеспечения, как VB делает это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню