Плюсы и минусы использования идентификатора базы данных в URL?

StackOverflow https://stackoverflow.com/questions/407120

Вопрос

Например: http://stackoverflow.com/questions/396164/exposing-database-ids-security-risk и http://stackoverflow.com/questions/396164/blah-blah загружает тот же вопрос.

(Я предполагаю, что это идентификатор базы данных таблицы вопросов?Является ли это стандартом в ASP.NET?)

Каковы плюсы и минусы использования такого типа схемы в вашем веб-приложении?

Это было полезно?

Решение

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

Загружайте JSON во время выполнения, а не динамически через AJAX https://stackoverflow.com/questions/395858/doesnt-matter-what-I-type-here

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

Однако один момент заключается в том, что вы в какой-то момент собираетесь переиндексировать свою базу данных, и наличие чего-то, что делает старый URL недействительным, было бы плохо, хотя бы по той причине, что поисковые системы все еще будут иметь старые ссылки.

Кроме того, здесь, на SO, вполне нормально использовать подобные ссылки на другие вопросы, поэтому, если они в какой-то момент захотят переиндексировать и, таким образом, перенумеровать объекты (или перейти к guid), им все равно придется сохранить старую структуру и id.

Итак, возможно ли, что это когда-нибудь произойдет или будет необходимо?Скорее всего, нет.

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

Другие советы

  1. Идентификатор базы данных используется для поиска вопроса в базе данных.Это числовое значение, которое означает:быстро.Если бы вы оставили это без внимания, вам пришлось бы искать заголовок, что намного медленнее.

  2. Сам вопрос является частью URL-адреса, чтобы сделать его "удобным для поисковой системы".Он будет выше по рейтингу g **gle и т.д.

Профессиональный:

  • Очень легко получить информацию о странице.Возьми идентификатор, позвони в базу данных, виола.Ваша таблица будет (должна) проиндексирована, чтобы сделать этот поиск очень быстрым.
  • Гарантированный уникальный URL-адрес.

Con:

  • Идентификаторы в вашей системе отображаются публично.В такой общедоступной системе это не проблема.Однако надлежащие меры безопасности на серверной части могут сделать это не проблемой даже в чувствительных системах.
  • Уродливые URL-адреса.более чем 6-значные номера просто трудно запомнить, и из-за них еще труднее различать страницы, если их идентифицирует только номер.Это также может иметь последствия для SEO, поскольку URL-адреса с более релевантной и хорошо структурированной информацией, как правило, ранжируются лучше.Это компенсируется также указанием названия публикации в URL-адресе.Хотя я по-прежнему не могу рассказать о каком-то конкретном сообщении своему приятелю за обедом, мне все равно легче найти его в истории браузера.
  • Более медленный поиск.Выполнение текстового поиска в базе данных, как правило, выполняется медленнее.

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

Я не думаю, что это плохая практика, и довольно распространенная, делать это в ASP.NET и других фреймворках.Как сказал @lassevk, если от этого зависит ваша безопасность, то вам нужно еще несколько проверок (может ли пользователь X получить доступ к записи Y), но это больше зависит от SEO-дружественности URL-адресов для общедоступных сайтов.

Например, URL-адреса SO следующие справедливо дружелюбный:

Плюсы и минусы использования идентификатора базы данных в URL?

Google оценивает информацию в НАЧАЛЕ URL-адреса выше, чем в конце, поэтому она выглядит следующим образом:

https://stackoverflow.com/pros-and-cons-of-using-db-id-in-the-url/q/407120

должен получить более высокий рейтинг за "плюсы и минусы использования идентификатора базы данных в URL".Это не единственный фактор, но он довольно важный - посмотрите на формат Amazon, они делают это по очень веской причине:

http://www.amazon.com/Maverick-Ricardo-Semler/dp/0712678867

http://server/book-name/dp/book-id

Wordpress делает это следующим образом:

http://server/yyyy/mm/dd/name-of-the-post

однако, если вы опубликуете два поста в один и тот же день под названием "foo", вы получите:

http://server/yyyy/mm/dd/foo

http://server/yyyy/mm/dd/foo2

слаг (foo / foo2) не является PK, но он поддерживается уникальным в таблице posts.

Я думаю, что добавление идентификатора в URL-адрес не является проблемой, если только ваш URL не является GUID!Слишком длинный, и его трудно печатать.Если это int или какой-то короткий guid (например, 6-8 символов), то это не должно быть проблемой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top