@IdFox

Как подписать данные на JavaScript и валидировать их на PHP?

Всем привет

Суть вопроса такая
Допустим я хочу собирать на JavaScript информацию о пользовательском окружении
Ну грубо говоря например получать текущий URL странички document.location.href
И затем эти данные отправлять на свой скрипт
Вопрос - как сделать защиту отправляемых данных, чтобы пользователь их не изменил?
Т.е что JavaScript получил, то и отправилось мне
В голову приходит такой вариант
1) На сервере генерируем случайный ключ (в нем зашиты время его создания, время действия и т.д)
2) Данный ключ используется для "подписания" данных, отправляемых JavaScript
3) На сервере проводится сопоставление ключа подписания, и пришедших данных
Если используют старый ключ или данные не сопоставляются, само собой валидация проваливается и т.д
Вот как можно реализовать данный алгоритм?
1) Чем можно "подписать" строку с данными заданным ключом на JavaScript?
Т.е получить хеш какой-то от заданной строки, используя заданный ключ
2) Как проверить на PHP валидность данных?
Ну т.е по сути подписать исходные данные этим же ключом, но уже на PHP

С другой стороны при достаточном знании JS можно также подписать и подделанные данные...
Тут вопрос не столько в строгой целостности данных, сколько максимально осложнить жизнь тем, кто эти данные захочет изменить
В общем, есть у кого какие соображения? :)

Всем спасибо за подсказку
  • Вопрос задан
  • 257 просмотров
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
После того как вы всё это сделаете, подделка данных усложнится ровно на один шаг - достать ключ и закодировать данные по нему, вместо просто отправки plain text данных.

Просто надо принять факт что 99.99% потенциальных пользователей глубоко насрать на ваши скрипты.
А тем кому надо всё равно отправят всё что угодно. Просто не надо делать какие-то критично важных/секретных вещей опираясь на эти данные.
Ответ написан
Stalker_RED
@Stalker_RED
С другой стороны при достаточном знании JS можно также подписать и подделанные данные
Вот именно. Вы можете затруднить подмену данных с клиента, но не можете ее полностью предотвратить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы