Eng

Examus

база знаний

поделись своим мнением и помоги нам стать лучше!

API. Реализация защиты от сдачи без прокторинга

Если вы интегрируетесь по API, то вы можете реализовать скрипт защиты от сдачи тестирования без прокторинга.

Как это работает?

  1. Веб-приложение Examus отправляет сигнал на страницу тестирования, которая работает внутри iframe.
  2. Когда скрипт на странице тестирования получает сигнал, то данная страница убеждается в том, что прокторинг запущен в данный момент.
  3. При необходимости скрипт может заверить, что данная страница в LMS соответствует той, что указана в сессии прокторинга Examus.

Пример:

Пример страницы которая ведет себя по-разному с прокторингом и без него. Чтобы увидеть разницу, просто откройте страницу, применяя два разных метода:

  • Нажмите на ссылку, то есть откройте страницу как top-level страницу.
  • Создайте сеанс прокторинга с этой страницей в качестве URL экзамена и запустите его с помощью веб-приложения Examus.

Страница экзамена

Исходный код

Подробнее

Примечания по безопасности

  • Страница экзамена убеждается в происхождении отправителя сообщения и, следовательно, доверяет отправителю.
  • Веб-приложение Examus не аутентифицирует страницу внутри iframe никаким образом. Получается, что любой код, выполняющийся в iframe на странице с веб-приложением, может выяснить, активен ли прокторинг.

Веб-приложение Examus

При открытии тестирования

  1. добавляет к адресу экзамена ?examus-client-origin=
  2. ожидает загрузки страницы в iframe (readyState === 4)
  3. отправляет сообщение на страницу внутри iframe proctoringReady_n6EY

Скрипт внутри iframe

При загрузке на страницу теста, который должен быть запущен с прокторингом:

  1. Закрывает содержимое тестирования, как спиннер
  2. считывает searchParam examus-client-origin
  3. window.addEventListener('message', e => {})
  4. при получении сообщения:
    1. if (e.origin !== expectedOrigin) return
    2. затем узнает, активен ли прокторинг
    3. Проверка assessCode: // 4.3 и 4.4 - это проверка того, что студент сдает именно тот тест, который указан в сессии прокторинга Examus.
      1. Если assessCode не сохранен в сессии
        1. мы сохраняем этот код
      2. Если assessCode сохранен в сессии
        1. если сохраненный код совпадает с URL, то assessCodeIsValid = false
        2. если он не совпадает, то assessCodeIsValid = true
    4. if (proctoringIsActive && assessCodeIsValid)
      1. снимается ограничение и студент сдаёт тест
      2. если нет, то он показывает инструкции о том, как правильно сдавать экзамен.