Существует ли опасность создания UUID на стороне клиента Javascript?
Мне нужно создать UUID для хранения в базе данных. Могу ли я генерировать тезисы UUID из Javascript в клиентском браузере (здесь есть несколько примеров)?
есть ли риск безопасности сделать это таким образом? Я понимаю, что любой может изменить UUID, прежде чем он будет передан на сервер для хранения. Поэтому мне нужно будет проверить, действительно ли они уникальны, прежде чем хранить их в базе данных, но кроме этого, есть ли какие-либо другие вещи кассу?
(извините за мой английский, не стесняйтесь исправлять грамматические ошибки)
edit: чтобы ответить на вопросы о том, почему я хочу это сделать, это потому, что я могу создать новый объект и его идентификатор в Javascript и добавить его в мое представление, а затем сделать вызов AJAX на сервер, чтобы добавить его в базу данных. Таким образом, мне не нужно загружать его из базы данных, чтобы узнать, что это основной идентификатор.
4 ответов
Не совсем так. Пока это простой идентификатор и ничего больше, и вы действительно проверяете его на достоверность и уникальность, он ничем не отличается от учетных записей пользователей, имеющих идентификатор в url-адресе, например.
посмотрите на панель URL. Бьюсь об заклад, 1296234-это основной ключ этого вопроса, но я ничего не могу сделать с этой информацией. То же самое с твоим сценарием.
какую выгоду вы видите в создании этих клиентских сторон? Честно говоря, лучший вариант-создать его на стороне сервера, вне досягаемости пользователей. Это может не спасти вас от каких-либо серьезных проблем безопасности, но это сократит избыточную проверку.
есть ли какая-то причина, по которой вы не можете создать базу данных (increment) ID?
Если, как вы говорите, вам придется проверить уникальность значения, прежде чем отправлять его в любом случае, почему бы просто не иметь какой-либо бэкэнд-язык, который вы используете, генерировать его. Это сделало бы его более непрозрачным.
да. Риск не специфичен для UUID, любой клиентский идентификатор имеет некоторые риски, в зависимости от того, что вы делаете с идентификатором. Проблема в том, что очень трудно аутентифицировать Javascript. Если вы принимаете ID, созданный клиентом, вы принимаете любые идентификаторы от хакеров.
риски могут включать,
сессия воровство. Если вы используете ID для идентификации сеанса, кто-то может использовать существующий идентификатор, сгенерированный ID и сервер может рассматривать его как существующий сеанс, если надлежащий уход не принимает.
дубликаты ключей. True UUID является случайным, но кто-то может генерировать дубликаты ключей, которые испортят вашу базу данных.
вы могли бы найти способы защиты от каждой из этих атак, но это пассивная защита. Это может нанести ущерб первоначальной цели создания идентификаторов на клиенте, что просто.