Mittwoch, 22. Juli 2015

typo3 formhandler CSRF-Token

Der Formhandler hat (zumindest soweite ich feststellen konnte in seiner aktuellen Version) keinen funktionierenden Schutz gegen XSS-Angriffe. Das heißt natürlich dass ein User der angemeldet ist auf böse Dinge klicken kann die über JS die Formhandler-Forms antriggern können. Und je nachdem was das für Formulare sind kann das schon blöd sein wenn zum Beispiel sämtliche Userdaten des Users mit Blödsinn überschrieben wird.

Ich hab mir dafür jetzt eine kleine Lösung verfasst die wie folgt aufgebaut ist:

1. Klasse PreProzessor Klasse zur Tokengenerierung
2. Templateanpassung mit hidden field für den Token
3. ErrorCheck für den Token

Zuvor muss man sich entscheiden ob man die Sourcen als Extension einbindet oder via Typoscript nachläd.
Ich hab mich für das nachladen entschieden:
plugin.Tx_Formhandler.settings.additionalIncludePaths.1=pfad/zum/code
In diesem Ordner liegen 2 Dateien:
1. Tx_Formhandler_PreProcessor_CSRFPreProcessor.php
2. Tx_Formhandler_ErrorCheck_CSRF.php

Tx_Formhandler_PreProcessor_CSRFPreProcessor.php:
<?php

class Tx_Formhandler_PreProcessor_CSRFPreProcessor extends Tx_Formhandler_AbstractPreProcessor {
        /**
         * The main method called by the controller
         *
         * @return array The probably modified GET/POST parameters
         */
        public function process() {
                $min=pow(10,7);
                $this->gp['csrf_token'] = rand($min,$min*10-1);
                $this->globals->getSession()->set('csrf_token',  $this->gp['csrf_token'] );
                return $this->gp;
        }
}
?>
Tx_Formhandler_ErrorCheck_CSRF.php:
<?php
class Tx_Formhandler_ErrorCheck_CSRF extends Tx_Formhandler_AbstractErrorCheck {
        public function check()
        {
                $checkFailed='';
                $csrftoken = $this->globals->getSession()->get('csrf_token');
                if($csrftoken != $this->gp['csrf_token'])
                        $checkFailed = 'CSRF-Token invalid!';
                return $checkFailed;
        }
}

?>
Im TS den PreProcessor als solchen einbinden.
plugin.Tx_Formhandler{
  settings.predef.myForm {
    preProcessors.1.class = Tx_Formhandler_PreProcessor_CSRFPreProcessor
}
Im TS die Validierung machen (im multiStepFall für alle Steps einbinden):
plugin.Tx_Formhandler{
  settings.predef.myForm {
    1 {
      validators.1.class = Validator_Default
      validators.1.config.fieldConf {
        first_name.errorCheck.1 = required
        #beispiel feld
        csrf_token.errorCheck.1 = required
        csrf_token.errorCheck.2 = CSRF
        #das CSRF ergibt sich automatisch durch den Klassennamen
      }
  }
}
Im Templatefile muss jetzt noch gleich nach dem hidden fields marker ein input element für den Token eingefügt werden:
###HIDDEN_FIELDS### 
<input type="hidden" value="###value_csrf_token###" name="###formValuesPrefix###[csrf_token]" ></input >

Mittwoch, 1. Juli 2015

noscript und Bürgerkarte

In Österreiche kann man eine Bürgerkarte oder Handysignatur bekommen um damit seine E-Government services zu nutzen.
Die Bürgerkarte wird in die E-Card integriert und benötigt einen Kartenleser. Die Handysignatur benötigt klarer weise eine gültige Telefonnummer unter der es möglich ist SMS zu empfangen.

Jetzt ist man sich doch der Gefahren des Internets bewusst und hat im Browser seines Vertrauens Plugins installiert die den Browser und das zugehörige System davor schützen soll. In meinem Fall ist das unter anderen NoScript, eine Extension die zum einen JavaScript blockiert das wild auf den Seiten wuchert. Nicht alles davon ist für die Funktion der Websites notwendig, sondern ist lediglich zur Datensammlung für dritte da (Google, facebook, etc.). Von schädigendem Code hab ich jetzt noch garnicht geredet. Außerdem verhindert NoScript dass Scripte über verschiedene Domänen (Beispiele für Domänen: orf.at, cdu.de) läuft das Schlagwort hier ist CrossSiteScripting XSS. Kurz gesagt, NoScript schützt meinen Browser.

Jetzt kann es aber sein dass man genau so ein CrossSiteScripting benötigt weil man ein Service von einem Drittanbieter mit verwendet wenn man ein Service einer Seite nutzt. Beispielsweise ein Anmelde- oder Authentifizierungsservice.

NoScript hat verhindert das ich das Authentifizierungsservice von a-trust verwenden kann.

Deshalb muss man, wenn man Bürgerkarte oder Handysignatur auf anderen Seiten als Finanzonline verwenden will in den NoScript-Options -> Advanced -> XSS die folgenden 2 Zeilen am begin des großen Textfeldes einfügen:

^https?://www\.a-trust\.at.*
^https?://www\.egov-service\.at.*

Damit weiß NoScript dass es diese Seiten zulassen soll.

Montag, 12. Januar 2015

modprobe

sudo rmmod iwldvm
sudo modprobe iwldvm

wobei iwldvm ein kernel modul ist (mein Netzwerk manager)
Gut zu wissen wie man den Netzwerktreiber neustartet.

Mittwoch, 14. Mai 2014

userFunc geht nicht...

Ja warum geht sie denn nicht?
ganz klar... (aber nicht intuitiv!) der Klassenname muss mit "user" beginnen.

FALSCH:
class myClass {
function myFunc($content,$conf){return "HelloWorld";}
}

RICHTIG:
class usermyClass {
function myFunc($content,$conf){return "HelloWorld";}
}

Dienstag, 13. Mai 2014

Typo3 tx_sv_authbase enableFields

Für alle die das schon mal gebraucht hätten, das Equivalent zu enableFields im authbase lautet wie folgt:
$fromTable = 'fe_users';
$authInfo = $this->pObj->getAuthInfoArray();
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery( 
            '*', 
            $fromTable, 
            '1 '.$authInfo['db_user']['enable_clause'],
            '', 
            '', 
            '' 
        );

Mittwoch, 5. März 2014

Gestern Abend ging es noch...

Für die Fälle wo etwas "gestern Abend noch ging" und sich keiner erklären kann wieso heute nix mehr geht. Hier find für Files mit changedate innerhalb der letzen 24 Stunden:

find /directory_path -mtime -1 -ls

Mittwoch, 26. Februar 2014

video zu mp3 Linux

Danke Andreas für diese Weisheit:

mplayer -ao pcm -novideo dateiname.mp4
--> audiodump.wav
lame --cbr -b 192 audiodump.wav xx.mp3

Zum einfachen reduzieren eines mp4-Videos auf die Soundspur.

Mittwoch, 2. Oktober 2013

Erdbeben

Krass, hier hat glaube ich gerade die Erde gebebt.
Bin gespannt ob ich dafür irgendwelche News finde oder ob es ein Ereignis im Haus war...

Copyright

All rights reserved by Me. © 2004-2020
Please do not copy any content of this WebLog without my written allowance.

Aktuelle Beiträge

CSS echo effect
Letztens hatte ich mit einem Kollegen das Thema wegen...
rothi - 15. Mär, 09:12
sed 's/ /@/g' ../sha256sums.txt cut...
sed 's/ /@/g' ../sha256sums.txt cut -d @ -f 1 sha256sums.txt...
rothi - 4. Jan, 15:56
reencode all Files
Wer je das Problem hat dass die Videos die die man...
rothi - 27. Feb, 10:12
a macing
When you meet someone, always make sure that it is...
rothi - 9. Aug, 15:37
gentle restart linux
Wenn Linux komplet freezed und nicht mal strg+alt+entf...
rothi - 7. Aug, 10:34

Links

Gelesen


Jan Michalsky
Süd Salatonien

W. Hohlbein
Enwor Saga

Douglas Adams
Per Anhalter durch die Galaxis


A. R. R. R. Roberts, Adam Roberts, Ute Brammertz
Der kleine Hobbnix


Joanne K. Rowling
Harry Potter und d** *******

John R. R. Tolkien
Der kleine Hobbit, Sonderausgabe


Wolfgang Hohlbein, Heike Hohlbein
Midgard


Stan Nicholls, Christian Jentzsch
Die Orks


Markus Heitz
Die Zwerge

R. Feist
Midkemia Saga 1-8


Krondor Saga 1-3

Raymond E. Feist
Die Kelewan-Saga 1- 8


Ursula K. LeGuin, Margot Paronis, Hilde Linnert, Ursula K. Le Guin
Erdsee. 4 Romane in einem Band


David Eddings, Leigh Eddings
Polgara die Zauberin


Terry Brooks, George Lucas
Star Wars Episode 1. Die dunkle Bedrohung.


Terry Pratchett, Andreas Brandhorst
Alles Sense! Ein Scheibenwelt-Roman


Terry Pratchett, Andreas Brandhorst
Gevatter Tod. Ein Roman von der bizarren Scheibenwelt.


Artenschutz
Berichte
Buchbericht
Free for all!!!
Gedichte
Geschichte
Michl Zitate
Puns
Studium
The sky is grey
typo3
Weisheiten
Profil
Abmelden
Weblog abonnieren