2012-03-04 24 views
0

這可能是一個非常基本/入門的事情,但讓我畫一個場景:返回一個安全的「制勝守則」,以用戶

比方說,我使用jQuery做某種對小問答遊戲的我現場。用戶點擊正確的答案,然後一個窗口彈出一個祕密的「贏家代碼」,他們可以在其他地方兌換。

怎樣才能獲獎者的代碼,這樣它不只是出現在HTML和的方式,用戶不能反向工程(至少在沒有相當大的努力)?

我的意思是,如果我只是生成一個包含用戶名和某種形式的額外信息,只有我自己知道,那會工作,對編碼的字符串?或MD5哈希或東西,但我怎麼使它所以獲獎者的代碼本身並沒有出現在HTML,並選擇正確的答案,只有當?

感謝您的任何建議的讀/教程/幫助/你可以提供建議。

+1

閱讀ajax ...將遊戲信息發送到服務器,並讓服務器在您的邏輯允許時生成返回代碼 – charlietfl 2012-03-04 00:12:14

回答

1

有一對夫婦的問題在那裏。

1)如何生成一個安全代碼:如果您正在實現「贏家碼」你可以使用一個散列IV +祕密+的用戶信息,或一些簽名機制

。您也可以在服務器上實現代碼到期時間,以便您可以在必要時進一步提高欄。

2)獲取代碼中獎用戶:

如果你不想要的代碼出現在HTML,那麼你要使用AJAX來得到它。然後將代碼注入到要顯示它的DOM中。此外,你應該使用安全的SSL通道來做到這一點,以防止嗅探。更進一步,考慮某種形式的「一次性」令牌,使一個人在這方面的中間人不能重新發布代碼請求和接收相同的獲勝代碼。

希望這給你的東西要考慮。

+0

我真正在尋找的是代碼的DOM注入。其他人沒有直接提到它,而是提到了AJAX和其他東西。我不知道爲什麼我沒有想到它,但它應該解決我所有的問題,所以我給你答案。如果我可以選擇兩個答案,我會給另一個侯比。再次感謝。 – daveycroqet 2012-03-04 00:41:26

2

如果我理解正確的,你只是想,只要選擇了正確答案的代碼出現?

如果是這樣,只是有一個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彈出什麼的,fetch it using Ajax

+0

用戶無法看到您要傳遞變量的PHP頁面(例如「testanswer .php「),然後進入他們的地址欄,並嘗試在頁面上的每一個選擇,直到它吐出一個贏家的代碼?例如,他們手動輸入www.site.com/testanswer.php?guess=answer1並將「answer1」更改爲其他任何內容,直到他們受到打擊。 – daveycroqet 2012-03-04 00:21:00

+0

@daveycroqet:是的。如果你希望每個用戶只有一次機會,修改PHP頁面以檢查用戶之前是否嘗試過(你可以讓每個人都登錄,或者檢查他們的IP,並允許一個IP只嘗試一次,...)。 – houbysoft 2012-03-04 00:29:53

+0

謝謝你的建議。我贊成這一點,因爲它也有很大幫助,但我並不特別想限制人們的嘗試;相反,我只是想防止濫用。 – daveycroqet 2012-03-04 00:42:46

0

首先,對於遊戲是安全可言,取勝的所有評價必須在服務器上完成,所有兌換代碼必須在服務器上獨創,併發送到客戶端。

它根本無法在客戶端上進行以安全的方式,因爲所有的JavaScript代碼可以檢查任何人。有模糊的JavaScript代碼,使其更痛苦的人來進行反向工程的手段,但不能阻止一個意志堅定的黑客 - 它只能慢下來或略阻止他們。用於評估遊戲結果的代碼/算法的唯一地方是安全且無需操作的,它位於您的服務器上。

即便如此,您可能需要做一些事情來讓一位用戶獲取可兌換的代碼,然後與其他人共享或獲得正確的答案,然後讓其他人寫一個腳本來提交正確的答案你的服務器生成無限制的代碼。

+0

謝謝你的回覆。你能不能提供一個鏈接到這些方法之一來隱藏javascript?我可能不會執行它,但我想看看。我可以讓谷歌,但我的印象是你有一個特定的方法。我想看看,如果是這樣的話。 – daveycroqet 2012-03-04 00:39:22

+0

@daveycroqet - 我不使用obscuration(對我來說似乎毫無意義),所以我沒有推薦的選項。 – jfriend00 2012-03-04 01:37:47

相關問題