We know Moodle and ILIAS from the inside.
Plugins, integrations and upgrades for universities and companies. We have reported more than 45 vulnerabilities in both systems and know where extensions typically break.
1Typical projects
- Plugins & extensions
- New features that feel like part of the platform.
- LTI integrations
- Embed external tools or provide your application as an LTI tool.
- Single sign-on
- Shibboleth, SAML, OAuth2 or LDAP, matched to your identity provider.
- Campus management
- Synchronise courses, enrolments and grades automatically.
- Upgrades & migration
- To new versions, including an inventory of all third-party plugins.
- Review of existing plugins
- Code quality and security, before a plugin goes into production.
2What we look for
Four lines where most vulnerabilities in Moodle plugins originate. We have found them in other people's code often enough.
require_login($course, false, $cm); $context = context_module::instance($cm->id); require_capability('mod/example:view', $context); ① $id = required_param('id', PARAM_INT); ② $entry = $DB->get_record('example_entries', ['id' => $id, 'exampleid' => $cm->instance], ③ '*', MUST_EXIST); echo $OUTPUT->render_from_template('mod_example/entry', [ 'title' => format_string($entry->name), ④ ]);
- ①Permissions first. Login and capability in the right context, before anything else happens.
- ②Type the input. No
$_GET, noPARAM_RAWwithout a reason. - ③Bind the record to the instance. Otherwise anyone with a login can read other people's entries (IDOR).
- ④Filter the output. Via
format_stringand Mustache templates, not as an HTML string.
On top of that: Moodle coding guidelines, PHPUnit and Behat in CI via moodle-plugin-ci, and a security review before every delivery. More under Security.
3Example
SituationA plugin from the Moodle 3.x days, the developer can no longer be reached, and the next upgrade is due.
- ①Inventory. What the plugin does, where permission checks are missing, which APIs have been removed.
- ②Upgrade to 4.1 LTS with automated tests for every supported version.
- ③Then maintenance for every Moodle release, under a maintenance contract if you wish.
4Frequently asked questions
Moodle or ILIAS?
We work with both and give neutral advice. Often the decision has already been made; then it is about getting the most out of the existing system.
We have many third-party plugins. Is an upgrade still possible?
Yes. We review each plugin individually: update, replace or remove, and tell you beforehand what each option means.
Do you also run the platform?
Yes, if you wish, with updates, backups and monitoring. More under Maintenance & operations.
5 / Contact
What should your learning platform be able to do?
Describe your project in three short steps. We usually reply within one working day.