2012-08-02 20 views
2

使用AJAX + PHP設計匹配的問答遊戲項目發奮工作後,我才知道,我的公司使用,以銷售產品的學習套件並不讓我跑服務器 - 在後端安裝腳本以安全地檢查答案。這全部歸因於不幸的等級專制。對於使用JavaScript來檢查測驗最安全的方法解答

長話短說,我必須以某種方式檢查客戶端上的答案(或找出一些棘手)。幸運的是,我已經能夠將jQuery上傳到本地文件夾結構,所以我可以使用它。

在客戶端檢查客戶端答案的最安全方法是什麼?或者有什麼方法可以引用外部文件...就像XML文件或其他東西一樣,以更安全地檢查答案?

+7

瀏覽器用戶可以完全控制那裏發生的事情。 **完成**控制。安全地進行任何形式的驗證的唯一方法是在安全的服務器上進行。 – Pointy 2012-08-02 16:14:15

+2

所以你寫在PHP中 - 但你不能使用PHP。標籤是否必要? – 2012-08-02 16:15:11

+0

我只是好奇,如果有人在匹配問答遊戲中作弊,會有什麼後果?實際上會發生什麼不好嗎? – 2012-08-02 16:22:58

回答

2

我唯一能想到的就是混淆你的代碼。這個過程也被稱爲縮小它。如果你這樣做,你的代碼將難以閱讀,因此更難以破解。它不會讓它變得不可靠,但對於那些想要作弊的人來說,這會讓生活稍微困難一些。您有幾種選擇:

我認爲,涵蓋了所有主要的因素,但是如果你知道我還沒有提到,請留下紀念nt下面。

相關問題這樣的回答:Is there a good JavaScript minifier?

+0

對我來說似乎很合理。這是我從其他人談到的結論。 – 2012-08-02 16:33:37

+0

謝謝!我很高興能有所幫助。 – starbeamrainbowlabs 2012-08-02 16:34:39

3

OK,如果你真的想要和需要做的一切JS,這裏是我會怎麼做:

  • 不要儲存正確的答案作爲明文,使用某種哈希。
  • 將封閉答案對象和散列函數隱藏在閉包中,以便它們不能通過瀏覽器的js控制檯調用。
  • 在檢查過程中添加一些異步部分,例如一個簡單的超時。通過以編程方式檢查答案並查找結果對象,使用該限制代碼對brute強制執行表單。
  • Obfuscate該代碼。 Security through obscurity從來不是一個好概念,但它可以防止最終黑客直接從您的代碼中複製相關部分。

但是,您仍然不清楚如何將結果發送到服務器以存儲它們。如果那部分很容易被僞造,你就會迷失方向。

相關問題