contao/import — Issue #3164: Whitelist für Referer bzw. Token-Prüfung
Author: jantheofel
Created: 2011-11-29 21:01:03+00:00
State: open
Labels: Feature, framework

Wenn man generell die Referer-Prüfung (was ja in 2.10 eigentlich zur Token-Prüfung wird) generell nutzen möchte, wäre es sehr hilfreich einzelne Domains von der Prüfung ausnehmen zu können. Zwei Anwendungsbeispiele:
1. Facebook Fanseiten können Contao-Inhalte als iframe einbinden (seit etwa April möglich) und senden dabei immer per POST Informationen mit (z.B. ob es sich um einen normalen Besucher oder einen Fan der eigenen Fanseite handelt).
2. Fremde Webseiten sollen gezielt für das POST an bestimmte Formulare freigeschaltet werden.

Dazu schlage ich eine kommasperatierte Liste in den Einstellungen und dazu folgende Implementierung vor:

system/config/config.php respektive system/config/localconfig.php ergänzen:

```
$GLOBALS['TL_CONFIG']['refererWhiteList'] = '';
```

system/modules/backend/dca/tl_settings.php Palatte ergänzen:

```
[...]displayErrors,debugMode,disableRefererCheck,disableIpCheck,refererWhiteList;{files_legend:hide}[...]
```

und ergänzen:

```
'refererWhiteList' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_settings']['refererWhiteList'],
'inputType' => 'text',
'eval' => array('tl_class'=>'long')
),
```

Die Anfrage erfolgt in system/initialize.php:

```
if ($_POST &&

![]($GLOBALS['TL_CONFIG']['disableRefererCheck'])
{
// Check for whitelisting
$whitelisted = 0;
foreach(trimsplit(',', $GLOBALS['TL_CONFIG']['refererWhiteList']) as $white)
{
if(preg_match("/".$white."$/", $referer['host']))
{
$whitelisted++;
}
}

// Exit if the token cannot be validated
if ()$whitelisted && (

![]($objInput->post('REQUEST_TOKEN') || )is_array($_SESSION['REQUEST_TOKEN'][TL_MODE]) || !in_array($objInput->post('REQUEST_TOKEN'), $_SESSION['REQUEST_TOKEN'][TL_MODE])))
{
```

--- _Originally created on June 14th, 2011, at 02:19pm (ID 3164)_