也許是一個noob問題,但我真的很困惑。
我正在嘗試進行在線測驗,用戶必須在4個可能的答案中進行選擇。但是我被困住了,好吧,因爲1個問題真的困擾着我。所以:
我有一個JavaScript函數,當用戶點擊錯誤的答案時,它會改變按鈕的背景顏色並禁用它。正確的答案按鈕(提交)要求不存在的功能,只是爲了迷惑人們,如果他們決定快速查看源代碼。一切都很順利,但我開始思考。如果用戶決定深入瞭解我的源代碼,該怎麼辦?他將能夠看到我的JavaScript函數,而且,他可以在沒有真正玩的情況下找出正確的答案。
有沒有什麼辦法可以隱藏源代碼(據我瞭解,這是不可能的JavaScript),但也許我可以使用別的東西?其他開發人員在這些情況下使用什麼?有什麼建議麼? :)用於在線測驗的JavaScript?
6
A
回答
6
2
這是一個很好的問題和一個每個web開發人員應該問自己......
這是我們作爲Web開發人員每天面對的一大難題。我們的JavaScript可以查看,有時甚至可以編輯。信任沒有來自客戶!
我最常做的是
- 生成某種類型的唯一的哈希的服務器
- 嵌入此散列成HTML和JavaScript上。
- 將此散列和任何請求一起發送到服務器。
- 通過再次重新創建哈希並確保它與發送的哈希相匹配,驗證服務器上的哈希。
哈希可以是項目的id,會話id,一些鹽和任何其他可識別的數據的串聯,您可以重建以驗證請求。
5
用戶可以作弊的原因是因爲答案在JavaScript代碼中。
解決方案:不要把答案放在JavaScript代碼。請將其保留在服務器上。
事情是這樣的:每當用戶他們的回答改變的問題...
- 的JavaScript發送答案到服務器。
- 服務器以YES或NO回覆。
- JavaScript顯示回覆給用戶。
用戶從來沒有看到答案,只是它是真是假。
TL;博士瞭解AJAX。
0
要完成其他的答案,提供如何學習如何建立一個服務器可能會花費你幾天,我將快捷方式,你有5分鐘的指導來設置一個簡單的node.js服務器,將隱藏你的答案。
安裝node.js.
創建一個名爲server.js
與下面的內容的文件。
var express = require("express"),
app = express();
app.get("first_answer",function(req,res){
res.send("b");
});
app.listen(8080);
打開端子,類型
npm install express
cd path_to_the_folder_you_placed_the_file
node server.js
這將安裝express.js模塊和運行服務器。
現在,您的網站,使用jQuery,只需從服務器請求的答案。例如使用jQuery:
var user_answer = ...
$.get("http://localhost:8080/first_answer",function(answer){
if (answer == user_answer)
alert("you got it right!");
});
對於更爲複雜的例子,最好使用服務器的,只是閱讀express.js
文檔。 (;
相關問題
- 1. Rails - 用於構建在線測驗/測試的插件?
- 2. 用於在線測驗應用程序的UML用例
- 3. 關於在asp.net c中的在線測驗應用程序#
- 4. 在線測驗,onbeforeunload
- 5. Javascript測驗驗證
- 6. Railstutorial.org驗證在線測試
- 7. 創建在線測驗
- 8. 在線測驗使用ASP點網
- 9. randomise javascript測驗
- 10. JavaScript測驗?
- 11. JavaScript測驗不起作用
- 12. 用JavaScript測驗窗體
- 13. 哪些Firebase離線功能用於測驗應用程序(ios)
- 14. 用於電子郵件&&複選框驗證的jQuery/JavaScript測試
- 15. 用於計算SCORM1.2測驗分數的Javascript
- 16. javascript測驗和html
- 17. Javascript測驗得分
- 18. Javascript測驗安全
- 19. 驗證JavaScript文件的在線工具
- 20. 簡單的測驗與javascript
- 21. 的Javascript人格測驗
- 22. 簡單的JavaScript測驗?
- 23. 用我的JavaScript測驗幫助我?
- 24. 用於Google Chrome的Javascript檢測並在Google Chrome中啓用JavaScript
- 25. 關於django的測驗crypto.constant_time_compare()
- 26. Moodle用於測驗嘗試頁的applicable_formats
- 27. 關於我的javascript測驗的具體查詢
- 28. 用於測試的單線程Java Websocket
- 29. 基於ajax的在線php測試儀
- 30. 用於驗證JavaScript語法的PHP類
「一切都很順利,但後來我開始思考」 - 大錯誤 –
這就是網絡的本質,你可以混淆代碼(不推薦)或縮小代碼 – elclanrs
如果你想保留人們看不到正確的答案,他們不需要成爲嵌入式源代碼的一部分,在這種情況下,所有的驗證和檢查都需要通過AJAX回調(或者同樣「安全」的方式異步處理服務器端) – zzzzBov