Могу ли я зашифровать контент, чтобы он не отображался в view-source, а затем показываться при загрузке страницы? - PullRequest
0 голосов
/ 03 июня 2011

У меня есть сайт, где пользователи расширяют пробную версию продукта с помощью регистрационного кода. Они нажимают на ссылку (с ключом в URL) из электронного письма, попадают на этот сайт, и появляется лайтбокс с их регистрационным кодом. В настоящее время я отображаю регистрационный код с помощью HTML и скрываю его с помощью CSS. Как только я проверяю, чтобы убедиться, что URL имеет правильный ключ с javascript, я отображаю регистрационный код. Однако это означает, что любой может просто просмотреть исходный код на странице и скопировать регистрационный код. Есть ли способ зашифровать код, чтобы он не отображался в исходном представлении, а затем расшифровать его, если URL имеет правильный ключ? Это один код на продукт, а не на пользователя, поэтому мне не нужно выполнять какую-либо проверку подлинности на стороне сервера.

Ответы [ 7 ]

6 голосов
/ 03 июня 2011

Если компьютер знает это, пользователь знает это.

Вы можете играть в игры обфускации, и все это делает ваш Javascript трудным для чтения.Но достаточно решительный пользователь найдет его в любом случае, и как только он это сделает, он может легко поделиться им со своими друзьями.

Один код на пользователя - единственный способ исправить это надежно.

2 голосов
/ 03 июня 2011

Я проверяю, чтобы убедиться, что URL имеет правильный ключ с javascript

Не проверяйте ключ на стороне клиента, проверьте ключ на сервере.
Это единственный способ гарантировать, что только действительные пользователи получают регистрационный код.

Пример псевдо-PHP:

if( validateKey($_GET['key']) ) {
    echo 'The Registration Code';
} else {
    echo 'Error';
}
0 голосов
/ 03 июня 2011

Зашифруйте свой регистрационный код (плюс немного волшебного cookie) ключом на сервере, прежде чем встраивать его в свой HTML. В вашем JavaScript, проверьте ключ (который входит в URL), расшифровав код регистрации. Если волшебное печенье совпадает, вы получаете действительный ключ и можете отобразить регистрационный код для пользователя.

Просмотр источника покажет только зашифрованный регистрационный код. Без ключа снупер не сможет извлечь регистрационный код.

Это означает, что у вас будет уникальный ключ для каждого регистрационного кода, что должно быть в вашей регистрационной системе. Ключ, который вы отправляете пользователю по электронной почте, вставленный в ссылку, по которой он нажимает, как вы сказали.

0 голосов
/ 03 июня 2011

Как ответили другие, выполнение этой проверки на стороне сервера проще и безопаснее.

У вас может быть AJAX-запрос на размещение ключа URL на странице php, который, в свою очередь, ответит правильным кодом регистрации.

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

Опять же, делать это на стороне сервера очень просто и безопасно, как вам нужно.

0 голосов
/ 03 июня 2011

Как упоминалось ранее, клиентская сторона не покроет ваши потребности в безопасности.

Лучше было бы, чтобы страница отправляла запрос Ajax на сервер, содержащий ключ, затем вы могли бы ответить кодом регистрации.

Еще лучше было бы напрямую проверить ключ по первому запросу, а затем принять решение вернуть страницу с ошибкой или страницу с информацией о регистрации.

0 голосов
/ 03 июня 2011

Еще один совет, который поможет вам вместо показа регистрационного кода на сайте вы можете отправить обратно электронное письмо пользователю с регистрационным кодом .

И, как предполагает Немо, правильный путь - один код для пользователя

Надеюсь, это поможет

0 голосов
/ 03 июня 2011

Код на стороне клиента небезопасен.Рассматривайте все, что вы отправляете на общедоступный в мире клиентский компьютер, и не доверяйте всему, что исходит от клиента, пока вы его не очистите.Достаточно решительный пользователь будет де-запутывать ваш код, независимо от того, сколько усилий вы приложили к начальной процедуре запутывания.

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