шифрование данных на стороне клиента с помощью html5 javascript - PullRequest
0 голосов
/ 03 августа 2011

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

Ответы [ 4 ]

3 голосов
/ 03 августа 2011

Я не веб-профессионал, но я бы сказал, что просто придерживайтесь всей проверки на стороне сервера.Из того, что я знаю о людях, использующих MMORPG, всегда есть способ получить доступ / изменить данные на стороне клиента.

1 голос
/ 04 августа 2011

То, что вы просите, невозможно. Независимо от того, как вы это реализуете, пользователь может использовать средства отладки, чтобы изменить работу кода в своем браузере - или, в конечном счете, просто сгенерировать HTTP-запрос POST самостоятельно, независимо от вашего кода.

0 голосов
/ 04 августа 2011

Как говорит Ник, определенный пользователь сможет обойти любую схему шифрования, которую вы используете на клиентском компьютере. Самое большее, что вы можете сделать, чтобы им было трудно сломаться. Вам нужно сделать две вещи: 1) зашифровать, чтобы затруднить несанкционированное вмешательство, и 2) попытаться обнаружить любое несанкционированное вмешательство.

Я не знаю, что доступно с полки для Javascript, если доступно, тогда используйте AES для шифрования и HMAC для обнаружения взлома. Если вам нужно написать свое собственное, тогда используйте RC4 для шифрования (не такого сильного, как AES, но намного проще для кодирования) и контрольной суммы для обнаружения взлома.

Единственное, что вы можете сделать, чтобы злоумышленнику было труднее найти ваш ключ шифрования и ключ HMAC, это не хранить их в одном месте. Имеют два массива, так что реальный ключ - массив1, массив XOR2. Таким образом, фактический ключ явно нигде не содержится в коде.

0 голосов
/ 03 августа 2011

Ну, так как вы говорите, что используете html5, почему бы вам просто не использовать поддержку хранилища? например:

var store = sessionStorage.question= new Array();
store[0]="10s";
store[1]="5s";

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

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