Возврат безопасного «выигрышного кода» пользователю - PullRequest
0 голосов
/ 04 марта 2012

Это, вероятно, очень простая / вводная вещь, но позвольте мне нарисовать сценарий:

Допустим, я использую jQuery для создания мини-викторины на моем сайте. Пользователь нажимает правильный ответ, и затем появляется окно с секретным «кодом победителя», который он может использовать в другом месте.

Как я могу сгенерировать код победителя, чтобы он не просто появлялся в HTML, и чтобы пользователи не могли его перепроектировать (по крайней мере, без значительных усилий)?

Я имею в виду, если бы я только сгенерировал закодированную строку, содержащую их имя пользователя и какую-то дополнительную информацию, которую только я знаю, это сработало бы, верно? Или MD5-хэш или что-то в этом роде, но как мне сделать так, чтобы сам код победителя не появлялся в HTML, и только тогда, когда выбран правильный ответ?

Спасибо за любые предлагаемые вам советы по чтению / обучению / помощи / советам.

Ответы [ 3 ]

2 голосов
/ 04 марта 2012

Если я вас правильно понял, вы просто хотите, чтобы код появлялся при каждом выборе правильного ответа?

Если это так, просто укажите страницу PHP, на которую вы отправляете ответ, выбранный пользователем в переменной GET / POST. Затем, пусть эта страница PHP покажет код, только если ответ был правильным. Таким образом, это не будет в HTML, если ответ неверен.

Так, например, ваша страница PHP будет выглядеть так:

<?php
if ($_GET["answer"] == "correct_answer") {
  echo "give the code here";
} else {
  echo "sorry the answer was incorrect";
}
?>

Кроме того, если вы хотите, чтобы вышеперечисленное появилось во всплывающем окне javascript или что-то в этом роде, загрузите его, используя Ajax .

1 голос
/ 04 марта 2012

Там есть пара вопросов.

1) Как создать безопасный код:

, если вы реализуете «код победителя», вы можете использоватьхэшированная информация iv + secret + user или какой-либо механизм подписи.Вы также можете реализовать время истечения кода на сервере, чтобы при необходимости можно было еще больше поднять планку.

2) Получение кода для победившего пользователя:

Если вы не хотите, чтобы код появлялся в html, вам нужно использовать ajax для его получения.Затем введите код в DOM, где вы хотите его отобразить.Кроме того, вы должны использовать безопасный канал SSL для этого, чтобы защитить себя от перехвата.Более того, рассмотрим какой-то «одноразовый» токен, чтобы посредник не мог перепостить ваш кодовый запрос и получить тот же код выигрыша.

Надеюсь, это даст вам возможность подумать.

0 голосов
/ 04 марта 2012

Прежде всего, чтобы игра была вообще безопасной, все оценки выигрыша ДОЛЖНЫ выполняться на сервере, и все подлежащие обмену коды должны быть уникальным образом созданы на сервере и отправлены клиенту.

Это просто невозможно сделать на клиенте безопасным способом, потому что ВСЕ код javascript доступен для проверки кем-либо.Существуют способы скрыть код javascript, чтобы кому-то было еще труднее перепроектировать его, но это не может остановить решительного хакера - он может только замедлить их или немного отпугнуть.Единственное место, где ваш код / ​​алгоритмы для оценки результатов игры безопасны и свободны от манипуляций, находятся на вашем сервере.

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

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