JavaScript(jQeury)を使用し、スロットのゲームを作りました。
3箇所の数字をクリックして、その結果をサーバーにajaxで送信します。
プログラム
php
1<span id="slot1" class="slot"></span> 2<span id="slot2" class="slot"></span> 3<span id="slot3" class="slot"></span> 4 5<script> 6$(function(){ 7 8 var stop = 0; 9 10 //スロット動かす 11 var slot1_timer = setInterval(function(){ 12 $('#slot1').text(Math.floor(Math.random()*10)); 13 }, 100); 14 var slot2_timer = setInterval(function(){ 15 $('#slot2').text(Math.floor(Math.random()*10)); 16 }, 100); 17 var slot3_timer = setInterval(function(){ 18 $('#slot3').text(Math.floor(Math.random()*10)); 19 }, 100); 20 21 //スロット止める 22 $('#slot1').one('click', function(){ 23 clearInterval(slot1_timer); 24 if(++stop === 3){ 25 sendPoint(); 26 } 27 }); 28 $('#slot2').one('click', function(){ 29 clearInterval(slot2_timer); 30 if(++stop === 3){ 31 sendPoint(); 32 } 33 }); 34 $('#slot3').one('click', function(){ 35 clearInterval(slot3_timer); 36 if(++stop === 3){ 37 sendPoint(); 38 } 39 }); 40 41 //得点送信 42 var sendPoint = function(){ 43 $.post( 'http://example.net/point/',{ 44 point: $('.slot').text(), 45 token: '<?php echo $_SESSION['token'] = sha1(uniqid(mt_rand(), true)); ?>' //CSRF対策 46 }); 47 }; 48 49}); 50</script>
その際、ソースコードを読むと
http://example.net/point/に
POST送信でpointとtokenの値を送ればよい事がわかってしまい、
pointを好きな値でリクエストを送れば、得点の偽造が出来てしまいます。
得点を正確に取得する方法はありますでしょうか。
ポイントを受け取るサーバーサイドはPHPを使用します。
よろしくお願い致します。
###追加質問
そもそも今回のプログラムはアルゴリズムの時点で実現不可であるとわかりました。
今回のゲームとは関係なく
インタラクティブにクライアント側からサーバー側にデータを送る時の
ロジックの参考になるような
サイトや書籍、検索キーワードなどはありますでしょうか?
よろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/08 08:54