У меня есть простая база данных контента. Должен ли я хэшировать «id», чтобы люди не просматривали его в URL? - PullRequest
2 голосов
/ 30 сентября 2009

Рекомендуется создать столбец (уникальный ключ), который является хешем. Когда люди просматривают мой URL, он выглядит так:

url.com /? ID = 2134

Но люди могут просматривать это и анализировать весь контент, верно? РЕКОМЕНДУЕТСЯ сделать 1 дополнительный шаг, чтобы сделать это через хеш?

url.com? ID = 3fjsdFNHDNSL

Спасибо!

Ответы [ 3 ]

4 голосов
/ 30 сентября 2009

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

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

0 голосов
/ 30 сентября 2009

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

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

0 голосов
/ 30 сентября 2009

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

...
url.com?id=2134
url.com?id=2135
url.com?id=2136
...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...