WordPress Templates sicherer machen

WP Theme im Backend

Egal ob die Verwendung eines freien, kommerziellen oder selbst erstellten Themes in deinem Weblog zur Verwendung kommt, man kann mittels PHP viele schöne und nützliche Funktionen einbauen. Aber durch diese Mächtigkeit kann man ebenso einfach und unbewusst Sicherheitslücken in das System holen.

Damit soll keine Angst vor dem Erstellen und Ändern von Themes und Templates geschürt werden, sondern Bewusstsein und Verantwortung für das Verwenden von Themes und Templates erzogen werden.

Daher in wenigen Punkten, einige Tipps und Tricks, die es gilt zu beachten bzw. zu prüfen.

  1. echo $_SERVER prüfen

    Die direkte Ausgabe von Variablen, welche durch ungeprüfte Eingabe/ Übergabe gefüllt werden, is t nicht mit den PHP-Sicherheitsregeln in Einklang zu bringen.

    Eine ganze Reihe von Themes nutzen den folgenden Syntax:

    <?php echo $_SERVER['REQUEST_URI']; ?>
    

    Beispielsweise in der searchform.php

    
    <form method="get" id="searchform" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
    

    Diese Ausgabe gehört da nicht hin, die Übergabe gehört gefiltert. Daher ist folgender Syntax zu nutzen.

    
    <form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
    

    Muss unbedingt mir $_SERVER gearbeitet werden, dann ist die Filterung der Daten anzuraten.

    
    <form method="get" id="searchform" action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>">
    
  2. echo $s prüfen

    Ähnlich verhält es sich mit der Ausgabe des Suchsyntax. Dabei handelt es sich um eine Übergabe von Nutzerwerten, die schnell zu einer XSS-Lücke werden. Daher gilt auch hier das Filtern der Eingabe.

    Vielfach in der searchform.php einiger Themes zu finden.

    
    <input type="text" value="<?php echo $s; ?>" name="s" id="s" />
    

    Die Lösung könnte, mit Sicherheitsmöglichkeiten von WordPress genutzt, wie folgt aussehen.

    
    <input type="text" value="<?php echo attribute_escape($s, 1); ?>" name="s" id="s" />
    

    Alternativ kann auch die Verwendung der Funktion the_search_query() genutzt werden.

    
    <?php the_search_query(); ?>
    
  3. Konstanten nutzen

    Es empfiehlt sich die Nutzung von Konstanten und nicht die Übergabe einer Variable als Pfadangabe. WordPress stellt dafür im Standard eine ganze Reihe von Möglichkeiten zur Verfügung.

    • TEMPLATEPATH
      Ordner des aktiv genutzten Theme
    • STYLESHEETPATH
      Ordner des Stylesheets des aktiv genutzten Themes
    • ABSPATH
      Order der WP-Installation, dort, wo die wp-config.php liegt
    • WPINC
      Ordner wp-includes
    • PLUGINDIR
      Ordner wp-content/plugins
  4. Prüfen

    Der WP-Scanner von BlogSecurity prüft die genannte Sicherheitslücke aus Punkt 1. Es empfiehlt sich diesen Scanner zu nutzen.

    Um das eigene Blog zu scannen, muss lediglich ein Kommentar in der header.php bzw. index.php, falls es keine header.php gibt, hinterlegt werden.
    <!-- wpscanner -->

Weitere Artikel und Referenzen

Author: Frank Bültge

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.

9 thoughts on “WordPress Templates sicherer machen”

  1. Danke für die Tipps! Derzeit scheint es bei den WordPress-Blogs richtig abzugehen: Regelmäßig hört von von gehackten Blogs. Liegt wohl auch daran, dass WQordpress immer beliebter wird.

Comments are closed.