Безопасно ли отображать / вставлять user_id, представляющий каждого пользователя из БД в HTML-странице? - PullRequest
0 голосов
/ 08 ноября 2018

Если я показываю user_id, который представляет каждого уникального пользователя в БД в качестве атрибута в элементе HTML, это хорошая практика? Потому что мне нужна ссылка на пользователя, если я хочу выполнить действие над этим конкретным пользователем, например добавить его в друзья.

Пример в HTML:

<div data-user-id='12' onclick=addFriend(12)>
    Click to add John as your friend
</div>

Где 12 - фактический идентификатор пользователя Джона в БД. С точки зрения безопасности, безопасно ли это делать?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Как обычно .... это сложно.

Все зависит от того, насколько ваш сайт привлекателен для хакеров (и, следовательно, сколько усилий они собираются инвестировать), и насколько безопасна остальная часть вашего решения.

Первый шаг в организованной атаке - узнать как можно больше о вашем сайте. Ваше текущее решение дает утечку информации. Знание того, что пользователи идентифицируются целым числом, может оказаться полезным (некоторые механизмы баз данных чаще используют целые числа, а не GUID). Это может помочь злоумышленникам угадать другие ключи. Угадывая последовательные идентификаторы пользователей, они могут узнать, сколько у вас пользователей.

Как только злоумышленник узнает всю эту информацию, он использует ее, чтобы попытаться проникнуть в ваше приложение. Чем больше информации у них есть, тем легче создать план. Отдельная часть информации может быть бесполезной, но когда вы соединяете ее с другими фрагментами, она может раскрыть что-то полезное.

Итак, нет, в этом дизайне нет очевидного серьезного риска. Тем не менее, это может быть частью более широкой атаки, и это может быть часть информации, которая раскрывает какой-то другой недостаток.

0 голосов
/ 23 ноября 2018

никогда не бывает проблем с отображением идентификатора пользователя, на самом деле, это более безопасно, чем отображение имени пользователя, которое может использоваться для входа в систему, но лучшее решение состоит в отображении идентификатора, который может быть установлен или изменен самим пользователем, посмотритедля дизайна Facebook для справки.

В этом случае вы хотите, чтобы пользователь мог установить свой общедоступный идентификатор, и вы используете этот общедоступный идентификатор для внешней идентификации пользователя, а затем сопоставляете его с действительным идентификатором пользователя.внутренне в бэкэнде.

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

...