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