Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Abruf statischer Dateien optimieren #120

Open
MartinGauk opened this issue Jul 16, 2024 · 0 comments
Open

Abruf statischer Dateien optimieren #120

MartinGauk opened this issue Jul 16, 2024 · 0 comments

Comments

@MartinGauk
Copy link
Contributor

Zielvorstellung/-gedanken:

  • Caching der Dateien serverseitig
    • Ort? Sicherlich im Dateisystem, local cache vs. "normaler" cache Ordner (macht bei geclusterten Umgebungen einen Unterschied)
    • Dateien müssen regelmäßig wieder aufgeräumt/gelöscht werden.
  • in der URL ist der Paket-Hash enthalten, keine Fragen-/Attempt ID oder Ähnliches
    • dadurch können die Dateien beliebig lange im Browser-Cache verbleiben
    • die URL zu derselben Datei (im selben Paket) bleibt auch über Fragen hinweg gleich
  • Die statischen Dateien (in Abgrenzung zu static-private) dürfen öffentlich abgerufen werden. Dies ermöglicht die Nutzung des Features ABORT_AFTER_CONFIG, d.h. das PHP-Script muss keine Datenbank-Verbindung aufbauen oder Sessions managen. Das hat auch den Vorteil, dass kein Session-Locking geschieht und die Dateien parallel heruntergeladen werden können.
  • Wenn eine Datei nicht im Cache liegt, kann es sinnvoll sein, Locks zu benutzen, damit nicht aus mehreren Prozessen heraus ein Download beim QPy-Server gestartet wird (Szenario Klausurbeginn).
  • Wenn eine Datei nicht im Cache liegt, sollte geprüft werden, ob die Datei überhaupt im Paket enthalten ist, bevor der QPy-Server kontaktiert wird.
  • Wie damit umgehen, dass ein Angreifer den Moodle-Server gezielt dazu bringt, sämtliche statische Dateien in QPy-Paketen zu laden? (Szenario das Paket-Repo umfasst irgendwann ganz viele Pakete und in Summe belegen die statischen Dateien mehr Speicher als eine kleine Moodle-Instanz verfügbar hat -> DoS).
    • Bei im Cache fehlenden Dateien doch die User-Session prüfen? In Quizzes kann man das gut machen, da Quizzes ohnehin nur von Usern (nicht von Gästen) aufgerufen werden können. Andererseits können die Fragen aber auch in anderen Aktivitäten verwendet werden, die diese Einschränkung möglicherweise nicht haben.
    • Tracken, welche Pakete (Hashes) tatsächlich in der Moodle-Instanz verwendet werden (wird schwieriger, wenn wir dynamische Abhängigkeiten haben)?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant