Как заставить клиент Javascript создать безопасный UUID?

Возможно ли, чтобы клиент Javascript создал UUID, который нельзя подделать?

Например, предположим, что одно из решений Создать GUID/UUID в JavaScript? использовались для создания UUID и отправки запроса на создание с UUID на сервер. Может ли сервер проверить, действительно ли UUID был создан функцией Javascript, а не какой-либо другой функцией?

Одна из идей состоит в том, чтобы использовать контрольную сумму, но генерация UUID и код контрольной суммы будут видны «хакеру». Они могли просто изменить функцию Javascript, а затем добавить контрольную сумму.

Итак, есть ли хорошие решения этой проблемы?


person B Seven    schedule 25.09.2014    source источник
comment
Похоже на проблему X:Y. Почему вас волнует, был ли UUID создан функцией Javascript, и что произойдет, если это не так?   -  person    schedule 26.09.2014
comment
Я не уверен ... просто кажется странным, что случайный UUID генерируется в Javascript, но хакер может отправить свой собственный UUID. Похоже, что если клиент собирается его сгенерировать, то серверу нужен способ проверить, правильно ли он был сгенерирован.   -  person B Seven    schedule 26.09.2014
comment
Это просто идентификатор и не имеет особых полномочий или привилегий, так зачем беспокоиться?   -  person    schedule 26.09.2014


Ответы (2)


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

Это если ваше значение UUID не используется в качестве секрета (например, номер активации). В этом случае значение не должно генерироваться на стороне клиента, и сервер должен отслеживать созданные им значения.

person plalx    schedule 25.09.2014

Вы можете выполнить некоторые базовые проверки работоспособности, такие как длина или формат, но на самом деле вы спрашиваете: «Учитывая число, могу ли я проверить, что оно было сгенерировано конкретным генератором случайных чисел?». Если генератор случайных чисел действительно случайный, то ответ должен быть «нет», поскольку, если я могу легко вернуться от ответа к функции, то это не очень случайно.

person Adam    schedule 25.09.2014