Zum Inhalt springen

Links in Extension mit CSRF-Token versehen - Wie?

Erstellt am 24. Oktober 2014 · 3 Antworten · letzte Antwort am 12. Januar 2016

Tags: Sicherheit, Frage

shibuyaku ·

Typo3 Version 6.2. LTS

Moin,

ich schreibe gerade an einer Erweiterung für und verzweifle etwas an der ab 6.2 geänderten mod.php, die CSRF-Token erzwingt ("if(!formprotection.....)". Weiß jemand wie ich folgenden, in Typo3 <= 4.7 funktionierenden, Link korrekt in 6.2 erzeuge?

$links .= '<a class="showLink" href="mod.php?M=web_txideaM1&listpage='.$this->listPage.'&show='.$row['uid'].'">'.$pen_com_num.'</a>';

Wenn ich den Link wie oben setze wird in der mod.php der nicht vorhandene CSRF Token überprüft und eine http://wiki.typo3.org/Exception/CMS/1392409507 geschmissen.

Momentan habe ich, Asche über mein Haupt, einfach die entsprechende Prüfung in der mod.php deaktivert aber das will ich ungern so abgeben 😛

Besten Dank für sachdienliche Hinweise!

shibuyaku ·

Da es keine Hinweise gab, aber ich die Lösung mittlerweile erarbeitet habe (wie schlecht ist das denn bitte dokumentiert, ich musste mir den benötigten Code aus Dev-Stories heraussuchen?) dokumentiere ich das hier mal.

Lösung

4.7 Code - Direkter Call von mod.phh - Löst in 6.2 eine Cross Site Scripting Protection Exception aus

$linkToMother = '<a href="mod.php?M=web_txideaM1&listpage'.$this->listPage.'&show='.$rowMother['uid'].'">'.$rowMother['title'].'</a>';

6.2 Code - Macht was der Einzeiler aus 4.7 tut, nur mit Cross Site Scripting Protection Token

$urlParameters = array(
   'listpage' => $this->listPage,
   'show' => $rowMother['uid']
);
$aHref = \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleUrl('web_txideaM1', $urlParameters); 
$linkToMother = '<a href="'. htmlspecialchars($aHref) .'">'.$rowMother['title'].'</a>';
Setzling ·

Bei mir wars auch eine andere Lösung. Ich habe die Links dann so an das php herankonkateniert:

<form action="' . \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleUrl('web_txtxekatoversandkostenM1', array('target' => '', 'SET[function]' => $this->MOD_SETTINGS['function'], 'id' => $this->id, 'returnUrl=' => htmlspecialchars($this->returnUrl), 'name' => 'editform')) . '" method="post" name="asd">