Как создать и использовать данные случаи

Я выполняю веб-сайт, и существует система выигрыша, которая дает Вам точки для количества раз, Вы играете в игру.

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

Ранее мне мешали защитить от этого нападения, потому что это считали маловероятным. Однако теперь, когда это произошло, я могу. Запрос HTTP происходит из флеш-игры и затем проверен php, и php вводит его в базу данных.

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

62
задан 10 November 2010 в 17:33

1 ответ

Эти очень простые изменения данного случая каждые 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, мог быть любой вызов функции или имя пользователя, и т.д. используемое в процессе.

0
ответ дан 31 October 2019 в 14:20

Другие вопросы по тегам:

Похожие вопросы: