Logo: Proxomitron - Ein Universeller Webfilter

Details

Was Seitenfilter filtern

Welche Content-Typen von der Filterengine verarbeitet werden und somit prinzipiell durch Seitenfilter verarbeitet werden können, bestimmt der Headerfilter Content-Type: (In) 03 [# WICHTIG! #] Prox: Filterung nach Content-Type steuern [MB].

Standardmäßig wird die Filterung für folgende Content-Typen aktiviert:

  • text/html
  • multipart/x-mixed-replace
  • application/xhtml+xml
  • text/javascript
  • application/x-javascript
  • text/css
  • text/vbscript
  • application/json
  • application/jsonrequest

Da diese verschiedenen Datenformate teilweise völlig unterschiedlich aufgebaut sind, ist es sehr wichtig, dass jeder Seitenfilter nur genau die Content-Typen bearbeitet, für die er auch entwickelt worden ist.

Mit Hilfe der Funktion $TYPE() können Seitenfilter auf einen oder mehrere dieser Content-Typen eingeschränkt werden. Die Zuordnung ist dabei wie folgt:

$TYPE(htm)
text/html
multipart/x-mixed-replace
$TYPE(js)
application/x-javascript
text/javascript
$TYPE(vbs)
text/vbscript
$TYPE(css)
text/css
$TYPE(oth)
alle anderen Daten, deren Verarbeitung durch Seitenfilter eingeschaltet ist

Da $TYPE() nur einen Teil der filterbaren Content-Typen abdeckt, gibt es zusätzlich noch die Möglichkeit, den Wert der globalen Variablen "CType" abzufragen. Dieser wird durch den Filter Content-Type: (In) 03 [# WICHTIG! #] Prox: Filterung nach Content-Type steuern [MB] immer passend zum Content-Type der gerade verarbeiteten Daten gesetzt.

Die Abfrage erfolgt mit Hilfe der Funktion $TST() nach folgendem Schema:

$TST(CType=js)
application/x-javascript
text/javascript
$TST(CType=html)
text/html
multipart/x-mixed-replace
$TST(CType=xhtml)
application/xhtml+xml
$TST(CType=css)
text/css
$TST(CType=vbs)
text/vbscript
$TST(CType=json)
application/json
application/jsonrequest

Verarbeitungsreihenfolge der Filter und deren Felder

Diese Reihenfolge zu kennen ist sehr wichtig, wenn man globale Variablen benutzt, um Daten zwischen Filtern zu übergeben.

  1. Bypass-Ausdruck (im Einstellungsfenster)
  2. Für Out aktivierte Headerfilter. Reihenfolge wie in Konfigurationsdatei.
    1. URL-Entsprechung
    2. Vergleichsausdruck ("Header-Wert Suchen")
    3. Ersetzungsausdruck
  3. Für In aktivierte Headerfilter. Reihenfolge wie in Konfigurationsdatei.
    1. URL-Entsprechung
    2. Vergleichsausdruck ("Header-Wert Suchen")
    3. Ersetzungsausdruck
  4. URL-Entsprechungen der aktivierten Seitenfilter. Reihenfolge wie in Konfigurationsdatei.
  5. Aktivierte Seitenfilter, deren Vergleichsausdruck "<start>" lautet. Reihenfolge wie in Konfigurationsdatei.
    1. Ersetzungsausdruck
    Die Eingrenzende Entsprechung wird bei diesem Sonderfall nicht verarbeitet und der Vergleichsausdruck ist aufgrund des Schlüsselworts nicht anderweitig verwendbar.
  6. Aktivierte Seitenfilter. Reihenfolge quelltextabhängig.
    1. Eingrenzende Entsprechung
    2. Vergleichsausdruck
    3. Ersetzungsausdruck
  7. Aktivierte Seitenfilter, deren Vergleichsausdruck "<end>" lautet. Reihenfolge wie in Konfigurationsdatei.
    1. Ersetzungsausdruck
    Die Eingrenzende Entsprechung wird bei diesem Sonderfall nicht verarbeitet und der Vergleichsausdruck ist aufgrund des Schlüsselworts nicht anderweitig verwendbar.
Für alle Headerfilter gilt:
  • Der Vergleichsausdruck wird nur dann verarbeitet, wenn die URL-Entsprechung entweder zutreffend oder leer ist.
  • Der Ersetzungsausdruck wird nur dann verarbeitet, wenn die URL-Entsprechung entweder zutreffend oder leer ist und wenn der Vergleichsausdruck entweder zutreffend oder leer ist.
  • Der Vergleichsausdruck gilt auch dann als leer, wenn er einen Ausdruck enthält, der keinerlei Text erfasst, also z.B. nur $SET() aufruft.
Für Headerfilter vom Typ URL gilt:
  • Proxomitron sortiert diesen Sondertyp nicht zusammen mit den anderen Headerfiltern in alphabetischer Reihenfolge. Die Position kann beim Speichern der Konfigurationsdatei wechseln. Sie gilt deshalb offiziell als zufällig (auch wenn sie nicht wirklich zufällig ist).
  • Da viele meiner Headerfilter in einer bestimmten Reihenfolge verarbeitet werden sollen, verzichte ich ganz auf URL-Headerfilter und benutze statt dessen die URL-Entsprechung normaler Headerfilter für URL-bezogene Entscheidungen.
Für alle Seitenfilter gilt:
  • Die Eingrenzende Entsprechung wird nur dann verarbeitet, wenn die URL-Entsprechung entweder zutreffend oder leer ist.
  • Der Vergleichsausdruck wird nur dann verarbeitet, wenn die URL-Entsprechung entweder zutreffend oder leer ist und wenn die Eingrenzende Entsprechung entweder zutreffend oder leer ist.
  • Der Ersetzungsausdruck wird nur dann verarbeitet, wenn die URL-Entsprechung und die Eingrenzende Entsprechung entweder zutreffend oder leer sind und wenn der Vergleichsausdruck zutreffend ist. Seitenfilter mit leerem Vergleichsausdruck sind nicht zulässig.
© Michael Bürschgens <website@proxomitron.de>