• 关于在线教学软件一些发现和思考


    最近一段时间用到了一些线上教育和线上考试的系统. 例如易班和学习通.

    不讨关于学习态度的一些东西, 只谈谈关于在使用过程当中的发现和思考.

    ------------------

    关于易班在线考试的BUG:

    ------------------

    使用易班的过程当中, 因为需要使用到易班的课群的在线考试功能. 又觉得手机操作效率太过低下, 是在Chrom里面访问的易班的手机端界面.


    在考试过程当中无意当中查看源码, 竟然发现易班的评分竟然是放在前端来进行判断的.


    不论当次考试是否能够重复提交. 在提交的确定的时候, 也就是前端向后端请求答案的时候.
    是可以通过查看源码的方式看到答案的.

    虽然这里的操作易班做了一点防护措施, 除了提交取消按键不能点选.
    不过在另外的标签里, 查看当前页面的源码. 依旧可以毫无阻拦的看到标准答卷.

     


    ------------------
    关于学习通(泛雅平台) 结构:
    ------------------

    PC叫泛雅平台, 移动端叫学习通.
    可能因为主要用途并不相同. 学习通的防护措施相当严苛.

    学习通采用的是页面嵌套框架的方式.
    在课程界面内. 该课程所有的章节 全部汇集在一个页面内. 不论学习该学科的哪个章节, 页面都处在同一个url下.
    当点击其中一个标题的时候, 会发送一个ajax请求,在当前页面地址再去加载新的frame,以显示章节内容.

    这样的做法虽然牺牲了一定的用户体验, 但的确杜绝了相当一部分隐患. 最起码提高了通过前端动手脚的门槛.

    课程章节限制:
    在课程章节上, 学习通也采用进度的形式. 完成之前章节的学习内容之后, 才会解封接下来章节.

    鉴于刚才提到的, 所有内容都是同一个url. 即便是下一章节权限的解锁,亦需要再次请求一个新的章节列表. 在页面显示上有相当的延迟.

    需要吐槽的是, 受限于url,后台对默认读取的章节没有设置.
    在学习过程当中一旦刷新页面, 则学习进度会请求一个蜜汁历史章节出来. 又需要重新选择,,,读取,,,等待,,,


    在课程进度内部,一般分有视频.和对应视频内容的,章节测试两页.


    在章节测试页上的防护措施上, 只有一个单位时间内提交过多的验证码.
    主要是在视频上的限制.

    视频限制:

    视频使用的原生html5视频元素.
    在视频控件的处理上, 隐藏定位, 变速一些控件. 当该当节点完成之后重新显示.
    在视频元素的处理上, 设置了focus焦点判断. 当鼠标移出视频范围视频则暂停.(该限制主要针对桌面用户, F12后Pad和手机端自然无法限制)

    在视频事件判断上.

    点击播放按钮的时候, 发送请求. 增加状态isPassed:False.

    视频播放完毕的时候, 发送请求. 更改状态isPassed:True.



    当章节完成之后, 不管点击播放还是播放结束, 都是isPassed:True.

    值得一体的是, 后来我意外看到张图. 后端对于视频观看时间也是有记录的.

    对isPassed:False和isPassed:True的记录时间点,记录了时间差.
    推断应该不会累加两个isPassed:True间的时间差.


    '''
    所以说
    当想通过增加单一视频时长, 来增加总观看时长.应该打开一个未完成的视频, 点播放.然后中间暂停, 不刷新页面前提下, 一直到觉得时间足够长的时候,再继续播放完视频.
    可增加总视频播放时间

    ***


    不过依旧可以增加判断, 杜绝这种增加视频观看时间的情况.
    get 视频元素时长
    if 观看时间 > 视频元素时长*N:
    观看时间 == 视频元素时长*N
    '''


    ------------------
    总结:
    ------------------
    不能相信前端是有道理的, 但凡涉及到数据判断, 一旦交于前端则有泄露的可能.

    在使用学习通的过程当中, 一边感慨防护措施之多, 一边受折磨于这糟糕的交互体验. 还不时的怀念一下易班于我的坦诚以待.

    虽然不明白为什么学习通会采用这种架构, 不过应该总有需要防范的东西.

    改进的话, 如果在原有架构上. 除了默认请求章节的进度. 暂时想不到什么有用的东西.


    如果更换架构, 我觉得采用正常处理手段.

    使用对多url进行判断, 在RBAC基础上.

    新建一个进度表, 关联学生ID与学科ID. 默认进度1.

    当通过学生ID验证后, 可以访问学科内容.
    当访问学科内容时候.
    if 进度<内容序列:
      return 拒绝
    else:
      访问

    当完成第N个章节之后, 进度为N+1.

    虽然多了些查询操作. 不过相比较现在糟糕的体验应该会好一些...

    #############


    部分内容为主观臆断, 如有误, 请不吝赐教.

  • 相关阅读:
    双目对物体定位
    七个不变特征识别
    bmp和opencv格式转换
    职业规划
    input disp fprintf用法
    多线程
    访问权限
    机器人运动学仿真
    MOTOCOM32运动控制器编程
    回调函数以及钩子函数的概念
  • 原文地址:https://www.cnblogs.com/jrri/p/12362586.html
Copyright © 2020-2023  润新知