最近,一个客户(学校)要求为他们的学生建立一个应用程序来显示成绩,所以很容易通过html表读取数据库等等。
但是一个安全问题困扰着我,孩子们很聪明,有时他们找到了向父母展示不同成绩的方法,他们不应该得到的成绩,所以从这个假设我认为很容易做到这样的事情:
$("table tr td").each(function(index, item){ $(item).text("A++") });
voila
你改变浏览器界面显示你的父母,你可以随意和你的女朋友一起去。
使用google console或firefox firebug你可以修改html,看起来你有不同的成绩,他们知道最终他们将面对真正的成绩。但同时购买时间大声笑。
所以基本上我提出了将等级渲染成图像的想法,但从设计角度,可维护性,可访问性等方面来看,这并不酷。
我认为这是一个需要从服务器解决的问题,但只是为了一个机会(远程机会)它是一种冻结DOM元素并拒绝对它们采取任何行动的方法?或者你有一个好主意来解决这个问题开箱即用的问题?
提前感谢..
答案 0 :(得分:3)
答案很简单:不要相信孩子向父母展示任何东西。只需一个聪明的孩子来重现你的HTML并显示完美的成绩,然后与每个人分享链接,然后即使是班级白痴也可以直接表现为他们的父母。
相反,正如Wesley Murch所说,你应该让父母有能力登录,而不是他们的孩子。然后,父母可以不受干扰地看到孩子的进步。答案 1 :(得分:1)
Kolink的回答很好。对于实际的编码答案,您将始终能够操作DOM,因此,尽管不是很友好,但您可以使用图像方法。只有这么多的成绩,所以只有这么多的图像,所以它并不是真正的资源密集型。
然而,你会想要无法识别图像的名称,否则孩子只能更改图像名称,我们就会回到我们开始的地方。
另一个可能的想法是研究HTML 5画布。你可以做很多人不能轻易直接编辑。