Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Apache http public Sicherheitsfrage (ForceType)

23 views
Skip to first unread message

Jira Admin

unread,
Sep 29, 2022, 12:22:04 AM9/29/22
to
Hier also nochmal in Deutsch:

Wir betreiben Jira hinter einem Apache http reverse proxy.
Dabei werden einige Icons und CSV Dateien in einem Ordner "public" unter der DocumentRoot veröffentlicht mit folgender Config:
DocumentRoot "/u01/data/httpd/www"
<Directory /u01/data/httpd/www>
Require all granted
</Directory>

<Location "/public">
ForceType text/plain
</Location>

Die Dateien in diesem Ordner sollen ohne Authentifizierung frei verfügbar sein.
Jetzt möchte ich in dem Ordner eine von einem Cronjob generierte Liste nicht als CSV sondern als HTML zur Verfügung stellen. Dazu müsste ich die ForceType Direktive entfernen.

Frage:
Ist das ein Sicherheitsproblem?
Hintergrund:
- Der Server ist nicht aus dem Internet erreichbar.
- Auf dem Server läuft nur Jira und nur ausgewählte Personen haben Zugriff.

Danke und viele Grüsse,
Tobias

Marco Moock

unread,
Sep 29, 2022, 2:20:17 AM9/29/22
to
Am 28.09.2022 um 21:22:03 Uhr schrieb Jira Admin:

> Jetzt möchte ich in dem Ordner eine von einem Cronjob generierte
> Liste nicht als CSV sondern als HTML zur Verfügung stellen. Dazu
> müsste ich die ForceType Direktive entfernen.

Werden die Dateien in HTML umgewandelt oder nur als .html abgelegt?

https://www.oreilly.com/library/view/apache-the-definitive/0596002033/re74.html
Man sollte nicht den MIME-Typ ohne zwingenden Grund ändern.

> Frage:
> Ist das ein Sicherheitsproblem?
> Hintergrund:
> - Der Server ist nicht aus dem Internet erreichbar.
> - Auf dem Server läuft nur Jira und nur ausgewählte Personen haben
> Zugriff.

Ich sehe keines.

Jira Admin

unread,
Sep 29, 2022, 4:52:20 AM9/29/22
to
Marco Moock schrieb am Donnerstag, 29. September 2022 um 08:20:17 UTC+2:
> Werden die Dateien in HTML umgewandelt oder nur als .html abgelegt?
Das CSV Ergebnis einer DB-Abfrage wird als einfache HTML Tabelle abgelegt.
Als die Datei nicht gerendert wurde habe ich die Ursache in der httpd config gefunden:
<Location "/public">
ForceType text/plain
</Location>

> > Ist das ein Sicherheitsproblem?
> Ich sehe keines.
Ich kann nicht nachvollziehen, warum diese Direktive verwendet wurde und konnte mir nur Sicherheitsbedenken vorstellen.
Inzwischen gehe ich davon aus, dass sie ohne konkreten Grund (vielleicht copy-paste...) eingesetzt wurde.

Danke für die Antwort - ich baue das aus.

Marco Moock

unread,
Sep 29, 2022, 5:15:48 AM9/29/22
to
Am 29.09.2022 um 01:52:20 Uhr schrieb Jira Admin:

> Marco Moock schrieb am Donnerstag, 29. September 2022 um 08:20:17
> UTC+2:
> > Werden die Dateien in HTML umgewandelt oder nur als .html abgelegt?
> >
> Das CSV Ergebnis einer DB-Abfrage wird als einfache HTML Tabelle
> abgelegt. Als die Datei nicht gerendert wurde habe ich die Ursache in
> der httpd config gefunden: <Location "/public">
> ForceType text/plain
> </Location>

Wenn es eine HTML-Datei ist, sollte diese auch den passenden MIME-Typ
haben, das sollte automatisch funktionieren, daher würde ich mal ohne
ForceType testen.

Arno Welzel

unread,
Oct 8, 2022, 4:33:48 PM10/8/22
to
Jira Admin, 2022-09-29 06:22:

> Wir betreiben Jira hinter einem Apache http reverse proxy.
> Dabei werden einige Icons und CSV Dateien in einem Ordner "public" unter der DocumentRoot veröffentlicht mit folgender Config:
> DocumentRoot "/u01/data/httpd/www"
> <Directory /u01/data/httpd/www>
> Require all granted
> </Directory>
>
> <Location "/public">
> ForceType text/plain
> </Location>

Und was hat das mit Jira zu tun?

> Die Dateien in diesem Ordner sollen ohne Authentifizierung frei verfügbar sein.
> Jetzt möchte ich in dem Ordner eine von einem Cronjob generierte Liste nicht als CSV sondern als HTML zur Verfügung stellen. Dazu müsste ich die ForceType Direktive entfernen.

Ja - denn mit ForceType wird ja *alles* als "text/plain" ausgeliefert,
auch die HTML-Dateien.

> Frage:
> Ist das ein Sicherheitsproblem?

Was genau?

> Hintergrund:
> - Der Server ist nicht aus dem Internet erreichbar.
> - Auf dem Server läuft nur Jira und nur ausgewählte Personen haben Zugriff.

Das hat damit nichts zu tun.


--
Arno Welzel
https://arnowelzel.de

Arno Welzel

unread,
Oct 8, 2022, 4:35:24 PM10/8/22
to
Jira Admin, 2022-09-29 10:52:

> Marco Moock schrieb am Donnerstag, 29. September 2022 um 08:20:17 UTC+2:
>> Werden die Dateien in HTML umgewandelt oder nur als .html abgelegt?
> Das CSV Ergebnis einer DB-Abfrage wird als einfache HTML Tabelle abgelegt.
> Als die Datei nicht gerendert wurde habe ich die Ursache in der httpd config gefunden:
> <Location "/public">
> ForceType text/plain
> </Location>
>
>>> Ist das ein Sicherheitsproblem?
>> Ich sehe keines.
> Ich kann nicht nachvollziehen, warum diese Direktive verwendet wurde und konnte mir nur Sicherheitsbedenken vorstellen.

Nein, ForceType sorgt nur dafür, dass der Webserver als Content-Type im
HTTP-Response-Header den angegebenen Typ sendet, egal welcher Art die
Datei ist.

Peter J. Holzer

unread,
Oct 8, 2022, 4:56:05 PM10/8/22
to
Wenn in das Directory "/public" Files aus nicht-vertrauenswürdigen
Quellen hochgeladen werden können, kann das durchaus ein
Sicherheitsproblem sein, wenn die dann als HTML, JavaScript oder gar PHP
interpretiert werden. ForceType text/plain dürfte das umgehen. Ist
natürlich eine Holzhammer-Methode mit unerwünschten Nebenwirkungen (wie
man sieht), aber wenn es um Sicherheit geht, neigen Leute oft zu wenig
durchdachten "Lösungen".

hp

Arno Welzel

unread,
Oct 9, 2022, 5:59:29 AM10/9/22
to
Peter J. Holzer, 2022-10-08 22:56:

> On 2022-10-08 20:35, Arno Welzel <use...@arnowelzel.de> wrote:
>> Jira Admin, 2022-09-29 10:52:
>>> Marco Moock schrieb am Donnerstag, 29. September 2022 um 08:20:17 UTC+2:
>>>> Werden die Dateien in HTML umgewandelt oder nur als .html abgelegt?
>>> Das CSV Ergebnis einer DB-Abfrage wird als einfache HTML Tabelle abgelegt.
>>> Als die Datei nicht gerendert wurde habe ich die Ursache in der httpd
>>> config gefunden:
>>> <Location "/public">
>>> ForceType text/plain
>>> </Location>
>>>
>>>>> Ist das ein Sicherheitsproblem?
>>>> Ich sehe keines.
>>> Ich kann nicht nachvollziehen, warum diese Direktive verwendet wurde
>>> und konnte mir nur Sicherheitsbedenken vorstellen.
>>
>> Nein, ForceType sorgt nur dafür, dass der Webserver als Content-Type im
>> HTTP-Response-Header den angegebenen Typ sendet, egal welcher Art die
>> Datei ist.
>
> Wenn in das Directory "/public" Files aus nicht-vertrauenswürdigen
> Quellen hochgeladen werden können, kann das durchaus ein
> Sicherheitsproblem sein, wenn die dann als HTML, JavaScript oder gar PHP
> interpretiert werden. ForceType text/plain dürfte das umgehen. Ist

Wie sie vom *Server* *interpretiert* werden hat mit "ForceType" nichts
zu tun. Die Angabe bezieht sich allein darauf, wie sie *gesendet* werden.

PHP z.B. wird üblicherweise mit einem FileMatch behandelt, wo der
MIME-Type völlig irrelevant ist.

Arno Welzel

unread,
Oct 9, 2022, 6:03:36 AM10/9/22
to
Arno Welzel, 2022-10-09 11:59:
Ergänzend: wenn man wirklich einen Ordner hat, der hochgeladene Dateien
zum Download anbietet, wird man sinnvollerweise genau für diesen Ordner
natürlich keinen PHP-Handler eintragen oder generell *alle* Anfragen
über ein zentrales PHP-Script laufen lassen, was dann selber
entscheidet, wie es die Anfrage behandelt.

Peter J. Holzer

unread,
Oct 9, 2022, 8:46:15 AM10/9/22
to
On 2022-10-09 09:59, Arno Welzel <use...@arnowelzel.de> wrote:
> Peter J. Holzer, 2022-10-08 22:56:
>> On 2022-10-08 20:35, Arno Welzel <use...@arnowelzel.de> wrote:
>>> Jira Admin, 2022-09-29 10:52:
>>>> Ich kann nicht nachvollziehen, warum diese Direktive verwendet wurde
>>>> und konnte mir nur Sicherheitsbedenken vorstellen.
>>>
>>> Nein, ForceType sorgt nur dafür, dass der Webserver als Content-Type im
>>> HTTP-Response-Header den angegebenen Typ sendet, egal welcher Art die
>>> Datei ist.
>>
>> Wenn in das Directory "/public" Files aus nicht-vertrauenswürdigen
>> Quellen hochgeladen werden können, kann das durchaus ein
>> Sicherheitsproblem sein, wenn die dann als HTML, JavaScript oder gar PHP
>> interpretiert werden. ForceType text/plain dürfte das umgehen. Ist
>
> Wie sie vom *Server* *interpretiert* werden hat mit "ForceType" nichts
> zu tun.

Sicher nicht? Was ist mit Handlern?

> Die Angabe bezieht sich allein darauf, wie sie *gesendet* werden.

Und wie sie gesendet werden, hat Auswirkungen darauf, wie sie der Client
interpretiert. Und ja, das kann durchaus Auswirkungen haben.

hp

Arno Welzel

unread,
Oct 9, 2022, 2:44:38 PM10/9/22
to
Peter J. Holzer, 2022-10-09 14:46:

> On 2022-10-09 09:59, Arno Welzel <use...@arnowelzel.de> wrote:
>> Peter J. Holzer, 2022-10-08 22:56:
>>> On 2022-10-08 20:35, Arno Welzel <use...@arnowelzel.de> wrote:
>>>> Jira Admin, 2022-09-29 10:52:
>>>>> Ich kann nicht nachvollziehen, warum diese Direktive verwendet wurde
>>>>> und konnte mir nur Sicherheitsbedenken vorstellen.
>>>>
>>>> Nein, ForceType sorgt nur dafür, dass der Webserver als Content-Type im
>>>> HTTP-Response-Header den angegebenen Typ sendet, egal welcher Art die
>>>> Datei ist.
>>>
>>> Wenn in das Directory "/public" Files aus nicht-vertrauenswürdigen
>>> Quellen hochgeladen werden können, kann das durchaus ein
>>> Sicherheitsproblem sein, wenn die dann als HTML, JavaScript oder gar PHP
>>> interpretiert werden. ForceType text/plain dürfte das umgehen. Ist
>>
>> Wie sie vom *Server* *interpretiert* werden hat mit "ForceType" nichts
>> zu tun.
>
> Sicher nicht? Was ist mit Handlern?

Die werden nicht für MimeTypes registriert sondern Dateiendungen. Siehe
auch:

<https://httpd.apache.org/docs/current/mod/mod_mime.html#addhandler>

Und bei PHP via FPM ist das auch die übliche Vorgehensweise:

SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

<FilesMatch ".+\.ph(ar|p|tml)$">
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>

<FilesMatch ".+\.phps$">
Require all denied
</FilesMatch>

<FilesMatch "^\.ph(ar|p|ps|tml)$">
Require all denied
</FilesMatch>

>> Die Angabe bezieht sich allein darauf, wie sie *gesendet* werden.
>
> Und wie sie gesendet werden, hat Auswirkungen darauf, wie sie der Client
> interpretiert. Und ja, das kann durchaus Auswirkungen haben.

Wenn die vom Server gesendete Daten für den Client ein Problem
darstellen könnten, darf man *nichts* als normalen Inhalt senden sondern
generell alles "Content-Disposition: attachement; filename=...", damit
der Browser es zum Download anbietet und gar nicht erst selber öffnen will.
0 new messages