使用JSON提供测验的简洁方法

时间:2017-12-21 01:01:52

标签: javascript json ajax architecture client-side

这更多是关于代码组织和更流畅的方法,可以概括。特别是它在Jeopardy测验中,我正在构建以提高我的AJAX / JSON技能。我想将答案与问题区别开来。人们可以在DevTools中找到并打开JSON并找到正确的答案。我想让它变得更难,但不是太难以编码或添加任何更多层超过一个或两个JSON文件。 (并且不像过分数据库查询那样过度杀戮,因为它只是一个宠物项目)。

不知道怎么做... 这是我的JSON ..         {                             “问题”:“杰斐逊建造蒙蒂塞洛的城镇”,                             “选择”:[                                 “里士满”                                 “Raliegh”                                 “夏洛茨维尔”                             ]                         }

我对JSON中的问题得到了正确的答案,但我不确定这是做到这一点的最好方法......我认为anwser key可能更好。

2 个答案:

答案 0 :(得分:1)

你可以做到这一点(并保持简单)的一种方法是对你的JSON对象进行base64编码。

首先,一旦你有了所有问题,请将它们编码为base64。您可以使用JavaScript中的btoa函数执行此操作。不要把这行代码放在你的客户端。

btoa( JSON.stringify({ "question": "Town where Jefferson built Monticello", "choices": [ "Richmond", "Raliegh", "Charlottesville" ] }))

然后,将该base64编码的字符串放在代码中。

const data = "eyJxdWVzdGlvbiI6IlRvd24gd2hlcmUgSmVmZmVyc29uIGJ1aWx0IE1vbnRpY2VsbG8iLCJjaG9pY2VzIjpbIlJpY2htb25kIiwiUmFsaWVnaCIsIkNoYXJsb3R0ZXN2aWxsZSJdfQ=="

从那里,您可以解码并将其转换回代码中的JSON对象。

let questions = JSON.parse( atob(data) )

就像你在问题中提到的那样,这仍然可以被“黑客攻击”#34;无论如何,这都不是正确的安全措施。人们可以检查它并运行代码来获取问题和答案。但是,乍看之下答案并不明显。

为了使它更好一些,您可以通过混淆工具运行JavaScript。 dataquestions的变量会受到严重影响,识别正在解码的内容会更难。

答案 1 :(得分:0)

我制作了一个获取问题ID和所选答案的端点,如果错误,则返回其是否正确以及正确答案,将问题标记为已回答对于该过程中的该用户/会话。

这样,即使用户使用DevTools或类似的东西点击你的API,效果也会与通过用户界面回答相同。