‚ÜĎ

Diskussion ūü§Į
Bilder nicht versehentlich als Text laden

Wenn man zum Beispiel mit [a]-> ein Bild statt wie vorgesehen eine Aneamaldatei l√§dt, kann die unsinnige Ausgabe den Browser √ľberfordern (gemeldet von David). Muss man diese Art der Fehlbedienung durch den Autor verhindern? Und kann man, ohne auch berechtigte F√§lle zu beschneiden?

  1. Bei [a]-> erscheint die Bedingung möglich, dass die Dateiendung .nml sein muss, um so etwas zu verhindern. Bei [t-…]-> allerdings ist eine Positivliste von Dateiendungen sehr einschränkend. Wäre eine Negativliste von Dateiendungen denkbar? Dabei ist zu beachten, dass man mit Zeileneinschränkung wie [t]->testbild.png?1 durchaus sinnvolle Ausgaben auch bei Bildern erzeugen kann.

  2. Man k√∂nnte die M√∂glichkeit einr√§umen, in aneamal-config.php die Dateiendungen f√ľr verschiedene Datei-Tags einzuschr√§nken. Alternative: standardm√§√üige Einschr√§nkung, welche in aneamal-config.php aufgehoben werden kann.

  3. Falls Einschr√§nkungen standardm√§√üig gesetzt werden, welche Endungen sollen dann g√ľltig sein f√ľr die F√§lle, in denen Textdateien im weiteren Sinn geladen werden:

    [a] [a-…]
    [b] [p]
    [d] [q]
    [h]
    [t]
    [t-…]
    @style
    @script

    Der Vollst√§ndigkeit halber k√∂nnte man auch f√ľr die anderen Datei-Tags Beschr√§nkungsm√∂glichkeiten setzen. Ich neige allerdings dazu, m√∂glichst wenig an Beschr√§nkungen zu setzen. Nicht vergessen sollte man, dass es hierbei nur ums sanftere Abfangen versehentlicher Falschangaben seitens des Autors geht und nicht um eine Funktion, die im wunschgem√§√üen Betrieb einen Vorteil bringen w√ľrde.

  4. Zur Frage in @2, ob

    A. standardmäßige Einschränkung, die in aneamal-config.php aufgehoben werden kann, oder
    B. standardm√§√üig keine Einschr√§nkung, die in aneamal-config.php aber hinzugef√ľgt werden kann

    denke ich, dass nur eine standardm√§√üige Einschr√§nkung (A) das gemeldete Problem l√∂sen w√ľrde. Im Fall von (B) w√ľrde man sich ja fr√ľhestens auf die Suche nach der Konfigurationsm√∂glichkeit machen, wenn man schon ins Fettn√§pfchen getreten ist.

  5. Zu @3: Ich denke, dass mindestens folgende Dateiendungen in Gro√ü- und Kleinschreibung m√∂glich sein m√ľssen:

    [a] [a-…]: .nml
    [b] [p]: .tsv
    [d] [q]: .tsv, .nml
    [h]: .html, .htm, .svg, .xhtml, .xml, .mml (f√ľr MathML)
    [t]: mindestens alle sonst genannten + .txt
    [t-…]: mindestens alle sonst genannten + .txt
    @style: .css
    @script: .js

  6. Aus historischen Gr√ľnden k√∂nnte zu .nml jeweils .aneamal hinzugef√ľgt werden. Bei [t]-> und [t-‚Ķ]-> ist eigentlich jede Endung sinnvoll, die irgendein Textformat enth√§lt. So habe ich auf dieser Internetpr√§senz bereits Python-, PHP- und QBasic-Quelltexte angezeigt, die typischerweise Endungen wie .py, .php, .bas haben. Gerade bei Sprachen wie Python und PHP (und Ruby und Perl und ‚Ķ) die auch auf dem Server ausgef√ľhrt werden k√∂nnen und die zu diesem Zweck sowieso auf dem Server liegen, muss man mit solchen Endungen rechnen. Eine alte QBasic-Datei k√∂nnte man nat√ľrlich problemlos in .txt umbenennen, wenn nur der Quelltext gezeigt werden soll, ohne dass damit etwas passiert.

  7. Ein alternativer Ansatz, der zumindest die gr√∂√üten Fehler vermeiden w√ľrde, w√§re nicht die Dateiendungen zu beschr√§nken, sondern die Dateigr√∂√üe. Textdateien, die in einen Webseite eingebunden werden sollen, werden zum Beispiel kaum 1 Megabyte √ľberschreiten, wohingegen das bei Videos und Bildern und Audiodateien leicht passieren kann. Vielleicht gen√ľgt auch ein Viertel davon schon als Grenze, 250 kByte also. Knapp √ľber 130 kByte d√ľrfte die gr√∂√üte auf dieser Internetpr√§senz hereingeladene Datei betragen (https://prlbr.de/projekt/aneamal/quelltext/html).

    Freilich könnten Nutzer bei Bedarf die Grenze per aneamal-config.php beliebig erhöhen.

  8. Wenn du Bock auf schlaflose N√§chte hast, kannst du ja die Ebene Error, die es heute schon gibt und auf der Seite Fehlermeldungen erzeugt, von der Ebene Tipps unterscheiden. Bei Ungereimtheiten w√ľrde dann im Ordner wo das Merkw√ľrdige auftritt eine *.txt kreiert die Tipps enth√§lt, zB dass auf [j,i] eine Bildfatri folgen sollte. Das w√§re aber nur intern ersichtlich

  9. @8, so eine Tipp-Funktion wäre vielleicht etwas, was sich mit einer Update-Info wie im letzten Absatz von Kommentar 3 auf der Seite https://prlbr.de/projekt/aneamal/diskussion/update-funktion#K3 beschrieben, kombinieren ließe.

  10. @8: Ich habe die Idee in https://prlbr.de/projekt/aneamal/diskussion/autokorrektur-statt-fehlermeldung#K2 aufgegriffen. Dass ein versehentliches Laden einer gro√üen Mediendatei mit dem falschen Datei-Tag wie [a]-> oder [t]-> eine Ausgabe erzuegen kann, die den Browser √ľberfordert, w√§re damit aber noch nicht gel√∂st. So lohnt es, die M√∂glichkeiten einer Dateigr√∂√üenbeschr√§nkung oder einer anderen L√∂sung im Auge zu behalten.

  11. Ich gedenke die Dateigr√∂√üe von Textdateien wie in @7 beschrieben auf ein vern√ľnftiges Ma√ü zu beschr√§nken. Bei Bedarf kann sie jederzeit angehoben werden, allerdings nicht per aneamal-config.php, sondern per Metadeklaration √† la @text-file-size. Der genaue Name ist noch festzulegen. Die Einstellung per Metadeklaration hat den Vorteil, dass es lokal dort gemacht werden kann, wo man es braucht, und nicht f√ľr die komplette Internetpr√§senz geschehen muss.

  12. Im Testbetrieb funktioniert die Größenbeschränkung bei Textdateien im weiteren Sinne nun. Die Grenze kann von 128 kByte per Metadeklaration mit @textlimit angehoben werden. Der Wert sowie der Metadaten-Name können sich bis zur Veröffentlichung noch ändern.

  13. Statt @textlimit habe ich mich f√ľr @textcap und derzeit 256 KiB als Standardwert entschieden.

    Von den in @3 genannten Verweisen auf zu ladende Textdateien im weiteren Sinne sind √ľbrigens @script und @style nicht beschr√§nkt. Die Verwechslung mit einem Bild ist bei diesen einerseits nicht naheliegend. Andererseits w√ľrde, da es sich bei ihnen genau wie auch bei der Gr√∂√üenbeschr√§nkung um Metadeklarationen handelt, ggf. die Verarbeitung komplexer: Es stellte sich die Frage nach der Verarbeitungsreihenfolge der Metadaten. W√ľrde etwa beim Laden der Datei style.css in folgenden Beispielen die gleiche Gr√∂√üenbeschr√§nkung gelten oder w√§ren es unterschiedliche?

    --- Beispiel 1 ---

    @textcap: 123
    @style: ->style.css

    --- Beispiel 2 ---

    @style: ->style.css
    @textcap: 123

  14. Ich schließe die Diskussion, da @textcap das Problem mildert.
    Verhindern kann man Fehleingaben nicht.