Используя Первичный ключ / идентификационное Поле как идентификатор в URL

Проблема в функции очистки функции

function clearbutton()
            {
                // document.form1.checked= false;
                var num1 = document.getElementById("input1").value="";
                var num2 = document.getElementById("input2").value="";
            }

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

10
задан 19 February 2009 в 20:28
поделиться

5 ответов

Вы всегда хотите подарить пользователю хороший URL - не некоторый противный автоматически сгенерированный идентификатор. Но я не думаю, что необходимо сделать, сказал "дружественный URL" первичный ключ. Необходимо все еще использовать "классика" автоувеличенный, числовой PK и иметь второй столбец, который является уникальным "дружественным URL". Почему?

  1. Все таблицы комментария, таблицы оценок, безотносительно таблиц, которые имеют отношения с Вашей таблицей содержания, могут использовать числовой первичный ключ. Это означает меньшие индексы и более низкое использование памяти.
  2. Кто-то захочет изменить дружественный URL. Если у Вас есть числовой первичный ключ, Вы не должны обновлять ни одну из своих зависимых таблиц (или иметь DB, делают это через каскадное обновление).
  3. В будущем можно абстрагировать биты URL в другую таблицу. Упомянутая таблица может затем сохранить отображения URL "прежней версии", которые выпускают перенаправления к основной "реальной" карте URL. Затем, когда пользователь хочет изменить дружественный URL, Вы не должны повреждать весь входящий URL прежней версии. Не мог сделать этого, если бы Вашим первичным ключом был "дружественный URL".
  4. Я все еще был бы склонен использовать числовой первичный ключ во всей своей липкой вещи Ajax (например, post_new_comment (), функция JavaScript возьмет первичный ключ, не некоторый дружественный URL). Единственное время я использовал бы дружественный URL, находится в любой стоящей с пользователем структуре URL.
  5. Что касается безопасности? Если Ваше содержание является доступом, которым управляют, Вы собираетесь, должны проверить доступ, неважно, если это - первичный ключ или некоторый дружественный URL.
  6. Если Вы позволяете способам добраться до содержания через первичный ключ, люди могли бы попытаться включить случайный идентификатор. Если Ваше требование для не только ограниченный доступ к содержанию, но и отказ сказали, что содержание существует, это - вопрос формулировки Ваших ошибок. Это совпадает с с отказами входа в систему - Вы не говорите "имя пользователя, не найденное", Вы говорите "плохое имя пользователя или пароль". Включение случайных значений для нахождения содержания собирается быть проблемой для любого подхода, который Вы проявляете, это просто, что с числовыми ключами существует путь меньше значений для попытки.

Нижняя строка: Дружественный URL? Ад да. Используя их как первичный ключ? Ад нет.

14
ответ дан 3 December 2019 в 18:02
поделиться

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

2
ответ дан 3 December 2019 в 18:02
поделиться

Как Вы сказали, точкой помещения заголовков непосредственно в URL является SEO. Наличие ключевых слов в URL имеет значительный эффект на результаты поиска.

Однако несколько других мыслей, связанных с Вашими примерами:

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

    http://digg.com/space/Liquid_Water_Recently_Seen_on_Mars_2
    

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

Нет действительно никакой значительной угрозы безопасности с использованием первичного ключа в URL, кроме способности к людям предположить/предсказать другие, как pantulis упомянутый. Но Вы не должны полагаться, "никто не предположит это" как меры безопасности так или иначе.

2
ответ дан 3 December 2019 в 18:02
поделиться

Если Вы не включаете первичный ключ (ключи) в URL/ссылку, то необходимо сделать некоторый временный синтетический ключ, И, то, необходимо сохранить отображение того ключа в сессии для пользователя. Это добавляет больше состояния / использование памяти / что-то для повреждения к приложению.

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

2
ответ дан 3 December 2019 в 18:02
поделиться

Довод "против": любой посетитель может легко попытаться предположить другие идентификаторы, которые не могут быть тем, что Вы хотите.

1
ответ дан 3 December 2019 в 18:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: