Всегда ли необходимо скрывать сгенерированный MySQL идентификатор от пользователя? - PullRequest
3 голосов
/ 23 ноября 2011

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

Ответы [ 4 ]

5 голосов
/ 23 ноября 2011

Нет, он используется во многих контекстах.

Если ваш веб-сайт уязвим по-другому, например, с помощью SQL-инъекции или XSS, они могут использовать id для чего-то опасного. Но никогда с одним идентификатором.

Просто посмотрев свой профиль здесь на SO, ваш идентификатор 243414

3 голосов
/ 23 ноября 2011

Я не знаю ни одной причины, по которой предоставление идентификатора строки пользователю небезопасно. Практически все веб-фреймворки делают это в какой-то момент.

Использование возрастающего целочисленного идентификатора предоставляет некоторую информацию о базовых данных. Наиболее важно, что они обычно последовательны, поэтому потенциальный злоумышленник может предсказать идентификаторы, которые, вероятно, будут действительными. Однако если вы разрешаете пользователю запрашивать данные из вашего приложения для идентификатора, который он может не иметь права на просмотр, то, вероятно, в вашем приложении возникают более серьезные проблемы с безопасностью. Если вы правильно ограничиваете доступ или доступ к данным записи не должен быть ограничен, то раскрытие идентификатора не представляет большого (если есть) риска.

2 голосов
/ 23 ноября 2011

Это не опасно в одиночку.

Если ваша система имеет какой-либо идентификатор эксплойта, он может им помочь

Но не забывайте, если ваша система уязвима, какая-либо информация опасна, просто id облегчает ее

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

Иногда это может быть трагедией.

Допустим, у меня есть профиль в вашем приложении, и у меня есть фотографии в этом профиле. И когда я удаляю один из них, ссылка выглядит так

http://www.yourapp.com/myprofile/pictures/delete_pic.php?id=5

и это мое фото, представьте, что картинка 19 не моя

http://www.yourapp.com/myprofile/pictures/delete_pic.php?id=19

Здесь я удалю фотографию другого пользователя Если вам нужнопоказать такой идентификатор пользователю, зашифровать их при показе и расшифровать их при использовании, вы можете использовать

base64_encode() & base64_decode()

, но это очень просто, и можно получить, вы можете сделать свой собственный алгоритм или сделать что-то для генерации другого выхода изbase64 как

base64_encode($id+7); or loops   
...