Zum Inhalt springen

Fluid Formular Validierung - Action im Browser ändern?

Erstellt am 20. November 2015 · 1 Antwort · letzte Antwort am 7. Januar 2016

Tags: Fluid, Frage

yoggi74 ·

Meine Extension "gahvtool" soll im Plugin "hvlandlord" ein Formular zur Pflege von Wohnungen (Flat) haben.
Wenn ich das Fluidformular erstelle:
<f:form action="update" name="flat" object="{flat}" >
erhalte ich diesen HTML-Code:

<form name="flat" action="index.php?id=74&amp;tx_gahvtool_hvlandlord%5Baction%5D=update&amp;tx_gahvtool_hvlandlord%5Bcontroller%5D=Flat&amp;cHash=d97d3b80ade62272cd612b18a3054ac8" method="post">
<div>
<input type="hidden" name="tx_gahvtool_hvlandlord[flat][__identity]" value="4">

<input type="hidden" name="tx_gahvtool_hvlandlord[__referrer][@extension]" value="Gahvtool">
<input type="hidden" name="tx_gahvtool_hvlandlord[__referrer][@controller]" value="Flat">
<input type="hidden" name="tx_gahvtool_hvlandlord[__referrer][@action]" value="edit">
<input type="hidden" name="tx_gahvtool_hvlandlord[__referrer][arguments]" value="YTozOntzOjQ6ImZsYXQiO3M6MToiNCI7czo2OiJhY3Rpb24iO3M6NDoiZWRpdCI7czoxMDoiY29udHJvbGxlciI7czo0OiJGbGF0Ijt9e0b6a15985ff57c2d7b8698bca776fe2b862337d">
<input type="hidden" name="tx_gahvtool_hvlandlord[__trustedProperties]" value="a:1:{s:4:&quot;flat&quot;;a:3:{s:5:&quot;title&quot;;i:1;s:5:&quot;rooms&quot;;i:1;s:10:&quot;__identity&quot;;i:1;}}16aa2ac1354458dbc6b9c6476a3aa31eb5121769">
</div>

Alles schön und gut, aber jetzt kann ich im Browser einfach die Action in der Formular-Url ändern, z.B. von "update" auf "delete" oder ich ändere die tx_gahvtool_hvlandlord[flat][__identity] von 4 auf 5. Beides wird von Extbase akzeptiert - eigentlich, dachte ich, wird so etwas bei Fluidformularen durch die Hashwerte verhindert. Aber das gilt wohl nur für die Argumente die übergeben werden, nicht aber für die Werte.

Wie ist prinzipiell das Vorgehen, um so etwas zu verhindern?

froemken ·

Du erlaubst den Benutzern im Frontend Daten der Tabelle tx_gahvtool_hvlandlord zu ändern. Sofern Du keine weiteren Absicherungen eingebaut hast, dürfen diese Benutzer damit alle Datensätze dieser Tabelle ändern (möglicherweise beschränkt auf die PID). Von daher ist dieses Vorgehen kein Problem.

Wie hier zu lesen ist kümmert sich der Hmac nur darum, dass nicht einfach weitere Felder in das Formular eingebaut werden: https://docs.typo3.org/typo3cms/ExtbaseFluidBook/9-CrosscuttingConcerns/3-programming-secure-extensions.html

Ich habe das gerade ausprobiert und bekam die Meldung, dass ich möglicherweise vergessen habe diese neue Eigenschaft noch mit in die trustedProperties aufzunehmen. Also nochmal den HTML-Quellcode (Dieses JSON) verändert und jetzt erhalte ich:

The given string was not appended with a valid HMAC.

Es wird hier also nur auf die erlaubten Felder geprüft. Nicht jedoch ob die Daten für den aktuelle Request valide sind oder nicht.

Stefan