Jul 24

Es ist Ferienzeit und somit wieder Zeit in den wohlverdienten Urlaub zu fahren. Folgend eine Liste mit Links zu Touristen-Informationsseiten der jeweiligen europäischen Länder. Viele enthalten Informationen über lokale Angebote und Zeigen die Freizeitaktivitäten auf, für die das Land bekannt ist.

Belgien (BE)

Offizielle Homepage

Bulgarien (BG)

Homepage

Dänemark (DK)

Offizielle Homepage

Deutschland (DE)

Offizielle Homepage

Estland (EE)

Homepage

Finnland (FI)

Offizielle Homepage

Frankreich (FR)

Offizielle Homepage

Griechenland (GR)

Offizielle Homepage

Irland (IE)

Offizielle Homepage

Italien (IT)

Offizielle Homepage

Lettland (LV)

Offizielle Homepage

Litauen (LT)

Homepage

Luxemburg (LU)

Offizielle Homepage

Malta (MT)

Offizielle Homepage

Niederlande (NL)

Offizielle Hompage

Österreich (AT)

Offizielle Homepage

Polen (PL)

Homepage

Portugal (PT)

Offizielle Homepage

Rumänien (RO)

Offizielle Homepage

Schweden (SE)

Offizielle Homepage

Slowakei (SK)

Offizielle Homepage

Slowenien (SI)

Offizielle Homepage

Spanien (ES)

Offizielle Homepage

Tschechien (CZ)

Offizielle Homepage

Ungarn (HU)

Homepage

Vereinigtes Königreich (UK)

Offizielle Homepage

Zypern (CY)

Offizielle Homepage

Feb 02

In alten Versionen war es möglich, dass RealURLs “baseURL” automatisch gesetzt wurde, indem man ihr den Wert “1″ zuwies. Das wurde allerdings als Sicherheitsrisiko eingestuft und deshalb besteht diese Möglichkeit in aktuellen Versionen nicht mehr. Die Anzahl der Domains sollte sich allerdings in Grenzen halten und man kann mit TYPO3-Conditions das Problem der unterschiedlichen URLs umschiffen:

config.baseURL = http://www.blogix.net/
[globalString = ENV:HTTP_HOST = www.example.com]
	config.baseURL = http://www.example.com/
[globalString = ENV:HTTP_HOST = www.example.net]
	config.baseURL = http://www.example.net/
[global]

In diesem Beispiel wird standardmäßig der URL http://www.blogix.net/ als baseURL verwendet. Wird die Seite über die Domain “www.example.com” aufgerufen wird “http://www.example.com/” verwendet, für die Domain “www.example.net” “config.baseURL = http://www.example.net/”.

Nun möchte ich noch auf das oben genannte Sicherheitsrisiko eingehen – da es keine offizielle Stellungnahme zum Problem gibt, hier meine Vermutungen, wie die automatische Konfiguration eigentlich nur zu einem Sicherheitsproblem werden kann:

Voraussetzungen am Server:

  1. Der Webserver muss die TYPO3-Seite IP-basiert und nicht domainbasiert ausliefern, d.h. ein Aufruf der IP-Adresse im Browser würde die TYPO3-Seite zeigen.
  2. Cache muss in TYPO3 aktiviert sein, warum sehen wir gleich.

Der Angriff:

  1. Eine Domain so einrichten, dass sie auf die IP-Adresse des Servers verweist – da der Server IP-basiert und nicht domainbasiert auf die Anfrage antwortet, liefert dieser die TYPO3-Seite aus.
  2. Die TYPO3-Seite über die in Schritt 1 eingerichtete Domain per Browser oder Skript aufrufen – nun müsste die Seite im Cache landen, dieser “vergiftet” werden, damit weitere Schritte des Angreifers zu seinem Erfolg führen.
  3. Die in Schritt 1 eingerichtete Domain wird nun umkonfiguriert, sodass sie auf eine böse Seite (z.B. Malware oder eine Konkurrenzseite) zeigt.

Der Besucher und die Weiterleitung:

  1. Die TYPO3-Seite wird über die bekannte Domain aufgerufen.
  2. Eingebundene Bilder kommen von bzw. Links führen zu der Domain des Angreifers, da die baseURL aus dem “vergifteten” Cache von TYPO3 stammt.

Das Problem kann meiner Meinung nach nur entstehen, wenn der Webserver die TYPO3-Seite IP-basiert ausliefert. D.h. bei ausschließlich domainbasierter Auslieferung führt oben genanntes Szenario nicht zum Erfolg des Angreifers und die Verwendung der automatischen Konfiguration wäre meiner Meinung nach sicher. Dass kein weiteres Szenario für einen erfolgreichen Angriff existiert, kann ich nicht ausschließen. Mit dem Plugin “lt_basetag” kann die automatische Konfiguration wieder aktiviert werden – Verwendung natürlich auf eigene Gefahr.

Jan 24

In der Standardkonfiguration von TYPO3 werden externe Links mit target=”_blank” versehen, entsprechen somit nicht mehr dem XHTML 1.0 Strict-Standard und überschreiben die Browser-Voreinstellungen des Benutzers. Anstelle von XHTML 1.0 Strict könnte man den DOCTYPE wechseln, z.B. XHTML 1.0 Transitional verwenden. Meine Meinung ist allerdings, dass man als Webentwickler nicht in die bevorzugten Einstellungen der Benutzer eingreifen sollte und deshalb sollte man unter anderem target=”_blank” nicht verwenden. In TYPO3 sind zahlreiche Einstellungen mittels TypoScript vorzunehmen, um (alle) target=”_blank” aus den Links zu entfernen. Folgende Einstellungen sind hierfür erforderlich und müssen in das “CONSTANTS”-Feld des Templates der Root-Page eingefügt werden:

PAGE_TARGET =
content.pageFrameObj =
styles.content {
	links {
		extTarget =
		target =
	}
	loginform.target =
	mailform.target =
	searchresult {
		resultTarget =
		target =
	}
}
Oct 22

Bei der Erstellung eines Login- bzw. Logout-Links muss man darauf achten, dass dieser nicht im Cache gespeichert werden darf. Würde das Objekt im Cache landen, dann würde bei jedem Besucher der Link/Text angezeigt werden, der beim ersten Aufruf der Seite im Cache gelandet ist. Würde man den Benutzernamen ausgeben, könnte auf jeder Seite ein anderer Benutzername ausgegeben werden und dieser würde nicht mit dem eigenen übereinstimmen. Deshalb muss man anstelle des “normalen” “COA” (Content Object Array) auf die ungecachte Variante “COA_INT” zurückgreifen. Die Grundstruktur des TypoScript sieht wie folgt aus:

[usergroup = *]
	temp.login = COA_INT
	temp.login {
		10 = TEXT
		10 {
			value = Abmelden
			lang.en = Logout
			typolink {
				parameter = 1
				additionalParams = &logintype=logout
			}
		}
	}
[else]
	temp.login = COA_INT
	temp.login {
		10 = TEXT
		10 {
			value = Anmelden
			lang.en = Login
			typolink {
				parameter = 2
			}
		}
	}
[global]

Angepasst werden müssen lediglich die Werte für “typolink.parameter”. Möchte man z.B. beim Abmelden den Benutzer auf der selben Seite belassen und nicht (in diesem Beispiel auf die Seite mit der ID 1) umleiten, so schreibt man anstelle von “parameter = 1″ “parameter.data = TSFE:id”.

Jan 29

Auf einigen Seiten werden externe Links anders gekennzeichnet als interne Links. Dies ist für viele Besucher sehr interessant, da somit sehr einfach erkennbar ist, wohin ein Link führt. Oft ist, aus welchen Gründen auch immer, ein Besuch einer externen Seite nicht erwünscht. Weiterlesen »