关于修复SCORM 1.2中这个可怕的安全漏洞的任何提示?我们做得对吗?



scorm 1.2 的设置方式是你有你的 RTE 页面,然后是两个 iframe,它们是你的 API,然后是你的实际课程 (SCO(

在API中,有一些javascript函数可以将数据获取/设置到数据库中。

但是,您可以做一些非常简单的事情,例如 ->右键单击、检查元素、编辑 HTML 文本

然后只需添加:


<button onclick="window.parent.parent.frames[0].LMSSetValue('GARBAGE','DATA')">Click me to insert garbage into the DB</button>

然后很明显,它添加了一个按钮,该按钮调用需要SCO访问的强制性SCORM函数,并且您单击该按钮100次,突然数据库得到了一堆垃圾。

同样,你可以让按钮调用你创建的函数,然后做10,000或每1毫秒一次,等等。

或者,甚至可以让它执行LMSGetValue('valuename'(,然后开始从数据库中检索记录!!!!


这不是一个巨大的安全漏洞吗?我们做错了什么吗?有没有办法防止这样的事情发生?

我读到一些程序员创建了一个 chrome 扩展程序,当单击一次时,它会插入所有必要的信息以自动完成任何 SCORM 1.2 课程......AKA 他们只是用"lesson_status = complete"这样的值调用函数("LMSSetValue"(。

那么这是否意味着SCORM 1.2根本不安全?

SCORM官方博客有一篇关于这个问题的文章,你可能会觉得很有趣。我在下面引用了一些相关的内容。

问题的症结在于,由于SCORM通信在Web浏览器中使用JavaScript,因此它本质上是不安全的,并且可以被任何对SCORM有一点了解的半称职的Web开发人员欺骗。这意味着知道自己在做什么的人可以欺骗 LMS,让他们认为课程是使用一些相当简单的脚本完成的。SCORM 使内容与 LMS 通信变得容易,这一事实也使黑客很容易与该 LMS 进行恶意通信。

这个问题并不新鲜。它已经广为人知了相当长的一段时间。[...]

[...]我完全同意SCORM应该更加安全,请不要怀疑。这篇文章旨在正确看待安全性,平息恐慌,并确保我们采用的任何解决方案都不会以安全的名义牺牲其他重要原则。

[...]

让我们假装我们在 SCORM 中实现了诺克斯堡级别的安全性。假设恶意用户绝对无法更改内容与 LMS 之间的通信。那么我们会实现安全的在线培训吗?那么我们会有一些足够好的东西来"高风险"吗?没有。不在安全在线培训所需的三个领域中的任何一个。

最根本的是,我们如何确定"识别的学习者"是实际参加在线培训的人?我们如何关闭"提议给我的好友买披萨"的安全漏洞,如果他会在做他的训练时点击我的训练?

我们如何确保学习者真正"体验教学内容的预期交付",而不仅仅是在盲目点击内容的同时观看YouTube视频?

我们如何确保学习者真正"保留了知识",而不仅仅是在谷歌上查找答案或向隔壁隔间的朋友询问测试答案是什么?在线培训是一种开卷测试。

看起来他们承认该模型的安全性为零,并决定不尝试修复它。这篇博文很旧,但不如SCORM 1.2那么旧。

总之,你绝对做对了。坚持下去!鉴于使用系统的要求,我不确定是否有任何方法可以解决此安全问题。

最新更新