Links
Tags
Creators
Details
1.3-SNAPSHOT
Compatibility
Changes
What's Changed
This release focuses on hardening the Web IDE server with several security fixes and new configuration options.
🔒 Security Fixes
- Fixed a path traversal vulnerability in the
/api/buildendpoint (High): project names are now strictly validated (only letters, digits,_and-allowed). Previously, a craftedprojectparameter could delete arbitrary directories on the server or compile and execute code outside thescriptsfolder. As defense-in-depth, the build process now also verifies via canonical path checks that the project directory cannot escape thescriptsfolder. - Fixed a JSON injection / stored XSS vulnerability in the
/api/treeendpoint (Medium): file names and status values are now properly escaped before being embedded in JSON, so files with special characters in their names can no longer break the JSON structure or inject scripts into the editor UI.
🐛 Bug Fixes
- Fixed an unhandled
ArrayIndexOutOfBoundsExceptionwhen an empty?key=parameter was sent to the Web IDE server.
✨ New Features
- Session timeout: editor tokens now expire automatically after a period of inactivity. Configurable via the new
session-timeout-minutesoption (default: 60 minutes, set to0to disable). Every authorized request refreshes the session (sliding timeout). - Reverse proxy / HTTPS support: new
behind-reverse-proxyconfig option (default:false). When enabled, the real client IP is read from theX-Forwarded-Forheader so the IP lock keeps working correctly behind an HTTPS reverse proxy (Nginx, Caddy, etc.). An example Nginx HTTPS configuration has been added toconfig.yml.
⚠️ Security note: Editor tokens are transmitted in plain text over HTTP. For internet-facing servers, we strongly recommend running the Web IDE behind an HTTPS reverse proxy. Only enable
behind-reverse-proxyif you actually run one, otherwise clients could spoof theX-Forwarded-Forheader.
Upgrading is strongly recommended for all users running the Web IDE.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:VTjWnWKu:uVqQXG0J"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:VTjWnWKu:uVqQXG0J"
}
