Как подписать данные на JavaScript и валидировать их на PHP?
Всем привет
Суть вопроса такая
Допустим я хочу собирать на JavaScript информацию о пользовательском окружении
Ну грубо говоря например получать текущий URL странички document.location.href
И затем эти данные отправлять на свой скрипт
Вопрос - как сделать защиту отправляемых данных, чтобы пользователь их не изменил?
Т.е что JavaScript получил, то и отправилось мне
В голову приходит такой вариант
1) На сервере генерируем случайный ключ (в нем зашиты время его создания, время действия и т.д)
2) Данный ключ используется для "подписания" данных, отправляемых JavaScript
3) На сервере проводится сопоставление ключа подписания, и пришедших данных
Если используют старый ключ или данные не сопоставляются, само собой валидация проваливается и т.д
Вот как можно реализовать данный алгоритм?
1) Чем можно "подписать" строку с данными заданным ключом на JavaScript?
Т.е получить хеш какой-то от заданной строки, используя заданный ключ
2) Как проверить на PHP валидность данных?
Ну т.е по сути подписать исходные данные этим же ключом, но уже на PHP
С другой стороны при достаточном знании JS можно также подписать и подделанные данные...
Тут вопрос не столько в строгой целостности данных, сколько максимально осложнить жизнь тем, кто эти данные захочет изменить
В общем, есть у кого какие соображения? :)
После того как вы всё это сделаете, подделка данных усложнится ровно на один шаг - достать ключ и закодировать данные по нему, вместо просто отправки plain text данных.
Просто надо принять факт что 99.99% потенциальных пользователей глубоко насрать на ваши скрипты.
А тем кому надо всё равно отправят всё что угодно. Просто не надо делать какие-то критично важных/секретных вещей опираясь на эти данные.
Все верно.
Автор, как только пользовтель получил данные - он может делать с ними что угодно и как угодно.
Следовательно если на стороне клиента происходит процесс подписания - этот процесс можно подделать.
-- все сказанное относиться к работе в браузере. Если вы сделаете "свой браузер", где пользователь не сможет ни чего менять - тогда можно реализовать подпись. Исходя из таких проблем многие банки делают Java-аплеты для ДБО (дистанционного банковского обслуживания), закрывая (в java-коде) алгоритмы подпсиания.
Тут не столько критические данные. сколько нужно именно верные данные
Т.е авторский контент может использоваться не на оригинальном сайте
Вот и стоит задача собрать адреса таких сайтов
И сделать так, чтобы эти адреса не подменили
IdFox, авторский контент защищается обычной защитой от хотлинкинга. И определяется по рефереру.
И прямыми ссылками долбить не смогут с чужих сайтов.
Смогут только через проксирование или сохранение на свой сервер. А это то что нам по сути и надо при защите - не давать забивать свой сервер левыми запросами на халяву.
Александр Аксентьев, вот именно от этого и пытаемся защититься.
Проксирование и сохранение данных на чужой сервер.
Т.е чтобы просто его адрес знать точно
А остальное уже дело юристов
В данном случае авторский контент это статьи
IdFox, тут же на Тостере каждый день по несколько вопросов от школоты, которая парсит чужие сайты. Можно усложнить, но при желании все равно сопрут контент.
Единственно 100% надежный вариант - хранить ваш авторский контент на флэшке в избушке в глухой тайге без доступа к интернету.