Zum Inhalt springen

wt_doorman: Vorstellung der Sicherheitsklasse

Erstellt am 22. September 2008 · 5 Antworten · letzte Antwort am 6. Juli 2010

Tags: PHP, Sicherheit, Frage

einpraegsam.​net ·

wt_doorman ist eigentlich nur für Entwickler interessant - alle anderen schnell zum nächsten Thema weiterspringen...

Anforderungen:
Damit piVars besser vor XSS und SQL Injections geschützt sind, ist es sinnvoll diese ausführlich zu filtern. Habe hier auch erst Mal durch Schaden lernen müssen 😃
Infos wie man sich vor XSS und SQL Injections schützen kann:
http://www.php.de/beitragsarchiv/5621-php-und-xss.html

Idee:
Da ich eine Sicherheitsklasse, die mehr oder weniger immer das gleiche macht, in powermail, wt_directory, etc... einsetze, bin ich auf den Gedanken gekommen, diese zu veröffentlichen.
Damit lassen sich auch ältere Extensions abriegeln.

In einem Array soll definiert werden, welche piVars erlaubt sind und was diese beinhalten dürfen:
Integer (nur Zahl), Alphanum (nur Zahlen, Buchstaben, Leerzeichen), Text (Filterung auf Anführungszeichen, etc...) oder ein bestimmter Wert
Nach einer Definition werden die piVars einer Sicherheitsklasse übergeben und diese gibt ein gefiltertes Array zurück.

Beispiel:
tx_wtdirectory_pi1[show] darf nur Zahlen beinhalten
tx_wtdirectory_pi1[filter][name] Darf keine verbotenen Zeichen beinhalten
Bild: design-and-style.de/…/wt_doorman.jpg

Umsetzung:
TYPO3 Extension wt_doorman installieren damit die Klasse zur Verfügung steht.

Beispieleinbindung:

if(t3lib_extMgm::isLoaded('wt_doorman', 0)) require_once(t3lib_extMgm::extPath('wt_doorman').'class.tx_wtdoorman_security.php'); // load security class

class tx_yourextension_pi1 {
	
    // main function of your extension
    function main($content,$conf) {
        $this->secure(); // Security options for piVars
        
        return $this->pi_wrapInBaseClass($this->piVars['uid'].$this->piVars['description'].$this->piVars['filter']['name']);
    }
	
	
	// Function secure() uses wt_doorman to clear piVars
	function secure() {
		if (class_exists('tx_wtdoorman_security')) {
			$this->sec = t3lib_div::makeInstance('tx_wtdoorman_security'); // Create new instance
			$this->sec->secParams = array ( // Allowed piVars type (int, text, alphanum, "value")
				'uid' => 'int',
				'description' => 'text',
				'filter' => array (
					'name' => 'alphanum'
				)
			);
			$this->piVars = $this->sec->sec($this->piVars); // overwrite piVars piVars from doorman class
		} else die('Extension wt_doorman not found!');
	}
}

Grüße, Alex

Ledoux ·

Hi Alex

Ich wollte deine Extension wt_gallery aussprobieren, bin dann aber an der wt_doorman gescheitert :x

Ich sehe in deinem HowTo nicht, wo ich den Code in der Extension, TER, TypoScript oder wo auch immer einfügen soll #angry#

Ich war so glücklich mal eine gute und schöne Gallerie zu finden, hilf mir noch, dass sie bei mir auch funzt #paralyzed#

LG Mathieu

fragile74 ·

Hi,

kann ich Variablen wie "[filter][name]" auch über den Extension Manager Config-Dialog im Feld "Global Check - Vars definition" einstellen ?

Bei Variablen der "ersten Ebene" (z.b. tx_wtdirectory_pi1|filter = ...) funktioniert wt_doorman .
Ich muss dazu sagen, daß ich alle dort nicht konfigurierten Variablen "clearen" lassen möchte.

Jedenfalls funktioniert bei mir ein Konstrukt ala "tx_wtdirectory_pi1|filter|name = " in diesem Dialog nicht, die entsprechende Variable(n) wird trotzdem ausgefiltert...

Any tipps ?
TYPO3 Version 3.2.6 mit PHP 5.2.6 und der neuesten wt_doorman-Version....

srtypo3 ·
einpraegsam.net schrieb

Eventuell ein Bug in doorman - müsste ich mir nochmal genau ansehen...

Auch wenn der Beitrag schon sehr alt ist:
gibt es jetzt eine Möglichkeit Variablen wie "[filter][name]" auch über den Extension Manager im Feld "Global Check - Vars definition" einzustellen?
Das wäre super!

Viele Grüße
Sebastian