如何在前端 Web 应用程序中隐藏测验的答案?
How can I hide the answers for a quiz in a front-end web application?
让我们考虑制作一个在浏览器中运行的测验。创建此类测验时,您希望在服务器端隐藏测验的答案,以便使用浏览器开发工具的客户端无法访问它们。
例如,这里有一个 quiz application in Vue 是不安全的,因为包含问题和答案的 JSON 数据被发送到前端。想过用服务端渲染,结果还是发给前端的答案
我可以使用哪些策略来隐藏客户端 JavaScript 应用程序中的敏感数据?如果 JS 无法确保数据安全,我该如何使用服务器来验证测验应用程序的答案?
HTML 和 JavaScript 都是 public 并且 不能 对用户隐藏。你可以采取措施让用户更难查看写在JavaScript中的答案(比如minification or obfuscation),但你仍然无法阻止它们从反编译代码和阅读它。
但是,如果您要使用 AJAX 从 服务器 获取数据(数据存储在数据库中或直接存储在服务器中-端变量),这将对用户完全隐藏,因为用户无法读取服务器端代码(缺乏安全漏洞)。
我认为唯一安全的解决方案是通过 http 请求发送问题参数(使用 axios 或 ajax)并在服务器端检查答案是否正确。或者一次提交整个测验问题。在那种情况下,您需要将问题和答案存储在数据库中。如果答案正确/不正确,服务器的唯一响应应该是。基本上可以看到客户端的所有内容。
让我们考虑制作一个在浏览器中运行的测验。创建此类测验时,您希望在服务器端隐藏测验的答案,以便使用浏览器开发工具的客户端无法访问它们。
例如,这里有一个 quiz application in Vue 是不安全的,因为包含问题和答案的 JSON 数据被发送到前端。想过用服务端渲染,结果还是发给前端的答案
我可以使用哪些策略来隐藏客户端 JavaScript 应用程序中的敏感数据?如果 JS 无法确保数据安全,我该如何使用服务器来验证测验应用程序的答案?
HTML 和 JavaScript 都是 public 并且 不能 对用户隐藏。你可以采取措施让用户更难查看写在JavaScript中的答案(比如minification or obfuscation),但你仍然无法阻止它们从反编译代码和阅读它。
但是,如果您要使用 AJAX 从 服务器 获取数据(数据存储在数据库中或直接存储在服务器中-端变量),这将对用户完全隐藏,因为用户无法读取服务器端代码(缺乏安全漏洞)。
我认为唯一安全的解决方案是通过 http 请求发送问题参数(使用 axios 或 ajax)并在服务器端检查答案是否正确。或者一次提交整个测验问题。在那种情况下,您需要将问题和答案存储在数据库中。如果答案正确/不正确,服务器的唯一响应应该是。基本上可以看到客户端的所有内容。