Für Menschen · Seien Sie begeistert und Sie werden begeistern !
In der Nachbearbeitung meines Eindrucks und Aufenthaltes des WordCamp08 habe ich es schon anklingen lassen - es gibt ein paar Hinweise für das Erstellen sicherer Plugins für WordPress, wobei ich in kurzer und knapper Form vorgehe.
Ich denke, dass jeder, der sich mit der Entwicklung eigener Plugins beschäftigt, die kurze und einfache Form geniest, ohne viel Drumherum. Außerdem fehlt mir aktuell die Zeit für lange und tiefe Texte, ich hoffe, dass man das versteht.
In der Präsentation sind eine ganze Reihe von Möglichkeiten hinterlegt, vor allem zum Thema Verantwortung und Bewusstsein im Bezug auf den PHP- und WordPress-Coding-Standard, die man immer beherzigen sollte.
Die einzelnen Punkte der Präsentation spreche ich hier nicht mehr an, gebe aber nochmal Infos zu Möglichkeiten und Referenzen.
PHP bietet eine ganze Reihe von Funktionen, die das Validieren und Filtern von Daten erlaubt. Einige Beispiele die im täglichen Umfeld sehr nützlich sind.
htmlspecialchars()strip_tags()urlencode()intval()addslashes()mysql_escape_string()Als Lektüre dient der PHP.net Security Guide und PHP Security Guide (PDF, 311kByte) mit 12 wichtigen Punkten.
Aber auch WordPress bringt einige Möglichkeiten mit, dabei sind zwei Funktionen besonders nützlich und hilfreich: attribute_escape() und wp_nonce().
Unerwähnt sollen aber nicht die Konstanten bleiben, die es bereits in den Core-Files von WP gibt und die gerade zur Anwendung prädestiniert sind.
TEMPLATEPATHSTYLESHEETPATHABSPATHWPINCPLUGINDIRCOOKIEPATH, COOKIEHASH, USER_COOKIE, PASS_COOKIE, AUTH_COOKIE und weitere Cookie-KonstantenEiner Konstante kommt dabei eine Sonderrolle zu: WP_DEBUG.
Diese Konstante muss in der wp-config.php auf TRUE gesetzt werden und schon ist WordPress im Debug-Modus (error_reporting(E_ALL)) und gibt alle Informationen nach außen.
define('WP_DEBUG', true);
attribute_escapeDie erste der beiden Funktionen dient dem Filtern von Daten und sollte vorrangig Verwendung bei der Ausgabe von Daten (echo's) finden, vor allem wenn sie per _POST oder _GET übertragen werden.
wp_nonceDie zweite Funktion bringt eine ganze Reihe weiterer Funktionen mit, die das Übergeben einer Signatur beim Absenden von Formularen ermöglicht. Nähers im folgenden Syntax.
/*
Plugin Name: Security Example
Plugin URI: http://bueltge.de/
Description: fbSecurity Example
Author: Frank Bueltge
Version: 0.1
Author URI: http://bueltge.de/
*/
/**
* Function definieren
* fbexample_ ersetzen
*
*/
if ( !function_exists('wp_nonce_field') ) {
function fbexample_nonce_field($action = -1) {
return;
}
$fbexample_nonce = -1;
} else {
function fbexample_nonce_field($action = -1) {
return wp_nonce_field($action);
}
$fbexample_nonce = 'fbexample_update_key';
}
/**
* POST Uebergabe, Admin-Page
* fbexample_ ersetzen
*
*/
function fbexample_page() {
global $fbexample_nonce, $fbexample_key;
if ($_POST['action'] == 'submit') {
if ( function_exists('current_user_can') && current_user_can('edit_plugins') ) {
check_admin_referer($fbexample_nonce);
$fbexample1 = $_POST['fbexample1'];
. . .
} else {
wp_die('
'.__('You do not have sufficient permissions to edit plugins for this blog.').'
');
}
}
?>
<?php _e('FB Example', 'fbexample') ?>
<?php
}
/**
* Installation von options-Feldern
* fbexample* ersetzen
*
*/
function fbexample_install(){
global $wpdb;
add_option('fbexample1', 'fbexample1_wert');
}
/**
* Admin-Page hinzufuegen
* fbexample* ersetzen
*
*/
function fbexample_menu() {
add_submenu_page('plugins.php', 'FB Example', 'FB Example Title', 10, __FILE__, 'fbexample_page');
add_options_page('FB Example', 'FB Example Title', 8, basename(__FILE__), 'fbexample_page');
}
/**
* Hooks nutzen und Admin-Page aktivieren
* fbexample* ersetzen
*
*/
if (function_exists('add_action')) {
if (isset($_GET['activate']) && $_GET['activate'] == 'true') {
add_action('init', 'fbexample_install');
}
add_action('admin_menu', 'fbexample_menu');
}
?>
Als letzten Punkt noch der Hinweis zu einer Idee, die ich für sehr gelungen halte - in Punkte Entwicklung und Umsetzung, das WordPress Plugin Framework.
Dieses Framework bringt die gängigen Möglichkeiten mit, die im Bereich Plugin erforderlich sind und hat die typischen Sicherheitspunkte, wie oben angesprochen, im Syntax. Das Framework steht als Klasse bereit und kann einfach eingesetzt werden.
Eine Dokumentation steht bereit und die deutsche Übersetzung ist in Vorbereitung.
Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.
händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.
Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.
xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>
Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als < und > als > einfügt.
E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.
Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.
Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.
Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 892 Beiträge, 16496 Kommentare in 14 Kategorien und 450 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet.
Design und Code ist unter Copyright
© 2001 - 2010 bueltge.de [by:ltge.de]
31. Januar 2008 um 14:58
31. Januar 2008 um 16:17
6. Februar 2008 um 11:46