Я выполняю веб-сайт, и существует система выигрыша, которая дает Вам точки для количества раз, Вы играете в игру.
Это использует хеширование для доказательства целостности запроса HTTP для выигрыша, таким образом, пользователи ничего не могут изменить, однако как я боялся, мог бы произойти, кто-то выяснил, что они не должны были изменять его, они просто должны были получить высокий счет и копировать запрос HTTP, заголовки и так далее.
Ранее мне мешали защитить от этого нападения, потому что это считали маловероятным. Однако теперь, когда это произошло, я могу. Запрос HTTP происходит из флеш-игры и затем проверен php, и php вводит его в базу данных.
Я - вполне уверенные данные случаи, решит проблему, но я не абсолютно уверен, как реализовать их. Что такое общий, и безопасный способ настроить систему данного случая?
Эти очень простые изменения данного случая каждые 1000 секунд (16 минут) и могут использоваться для предотвращения XSS, где Вы отправляете данные на и из того же приложения. (Например, если Вы находитесь в единственном приложении страницы, где Вы отправляете данные с помощью JavaScript. Обратите внимание, что у Вас должен быть доступ к тому же семени и генератору данного случая из сообщения и стороны получения)
function makeNonce($seed,$i=0){
$timestamp = time();
$q=-3;
//The epoch time stamp is truncated by $q chars,
//making the algorthim to change evry 1000 seconds
//using q=-4; will give 10000 seconds= 2 hours 46 minutes usable time
$TimeReduced=substr($timestamp,0,$q)-$i;
//the $seed is a constant string added to the string before hashing.
$string=$seed.$TimeReduced;
$hash=hash('sha1', $string, false);
return $hash;
}
, Но путем проверки на предыдущий данный случай, будет только побеспокоен пользователь, если он ожидал больше чем 16,6 минут в худшем случае и 33 минуты в лучшем случае. Установка =-4$q даст пользователю по крайней мере 2,7 часа
function checkNonce($nonce,$seed){
//Note that the previous nonce is also checked giving between
// useful interval $t: 1*$qInterval < $t < 2* $qInterval where qInterval is the time deterimined by $q:
//$q=-2: 100 seconds, $q=-3 1000 seconds, $q=-4 10000 seconds, etc.
if($nonce==$this->makeNonce($seed,0)||$nonce==$this->makeNonce($seed,1)) {
//handle data here
return true;
} else {
//reject nonce code
return false;
}
}
$seed, мог быть любой вызов функции или имя пользователя, и т.д. используемое в процессе.