这更多是关于代码组织和更流畅的方法,可以概括。特别是它在Jeopardy测验中,我正在构建以提高我的AJAX / JSON技能。我想将答案与问题区别开来。人们可以在DevTools中找到并打开JSON并找到正确的答案。我想让它变得更难,但不是太难以编码或添加任何更多层超过一个或两个JSON文件。 (并且不像过分数据库查询那样过度杀戮,因为它只是一个宠物项目)。
不知道怎么做... 这是我的JSON .. { “问题”:“杰斐逊建造蒙蒂塞洛的城镇”, “选择”:[ “里士满” “Raliegh” “夏洛茨维尔” ] }
我对JSON中的问题得到了正确的答案,但我不确定这是做到这一点的最好方法......我认为anwser key可能更好。
答案 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。 data
和questions
的变量会受到严重影响,识别正在解码的内容会更难。
答案 1 :(得分:0)
我制作了一个获取问题ID和所选答案的端点,如果错误,则返回其是否正确以及正确答案,将问题标记为已回答对于该过程中的该用户/会话。
这样,即使用户使用DevTools或类似的东西点击你的API,效果也会与通过用户界面回答相同。