{"id":115,"date":"2008-02-06T11:45:59","date_gmt":"2008-02-06T10:45:59","guid":{"rendered":"http:\/\/wordpress-buch.bueltge.de\/wordpress-templates-sicherer-machen\/31\/"},"modified":"2008-02-06T11:45:59","modified_gmt":"2008-02-06T10:45:59","slug":"wordpress-templates-sicherer-machen","status":"publish","type":"post","link":"https:\/\/bueltge.de\/wordpress-buch\/wordpress-templates-sicherer-machen\/","title":{"rendered":"WordPress Templates sicherer machen"},"content":{"rendered":"<p><img class=\"alignright\" src='https:\/\/bueltge.de\/wordpress-buch\/files\/2007\/04\/wordpress-theme-backend-128.png' alt='WP Theme im Backend' \/><\/p>\n<p>Egal ob die Verwendung eines freien, kommerziellen oder selbst erstellten Themes in deinem Weblog zur Verwendung kommt, man kann mittels PHP viele sch\u00f6ne und n\u00fctzliche Funktionen einbauen. Aber durch diese M\u00e4chtigkeit kann man ebenso einfach und unbewusst Sicherheitsl\u00fccken in das System holen.<\/p>\n<p>Damit soll keine Angst vor dem Erstellen und \u00c4ndern von Themes und Templates gesch\u00fcrt werden, sondern Bewusstsein und Verantwortung f\u00fcr das Verwenden von Themes und Templates erzogen werden.<\/p>\n<p>Daher in wenigen Punkten, einige Tipps und Tricks, die es gilt zu beachten bzw. zu pr\u00fcfen.<br \/>\n<!--more--><\/p>\n<ol>\n<li>\n<h3><code>echo $_SERVER<\/code> pr\u00fcfen<\/h3>\n<p>Die direkte Ausgabe von Variablen, welche durch ungepr\u00fcfte Eingabe\/ \u00dcbergabe gef\u00fcllt werden, is t nicht mit den PHP-Sicherheitsregeln in Einklang zu bringen.<\/p>\n<p>Eine ganze Reihe von Themes nutzen den folgenden Syntax:<\/p>\n<pre>\n&lt;?php echo $_SERVER['REQUEST_URI']; ?&gt;\n<\/pre>\n<p>Beispielsweise in der <code>searchform.php<\/code><\/p>\n<pre><code>\n&lt;form method=&quot;get&quot; id=&quot;searchform&quot; action=&quot;&lt;?php echo $_SERVER['REQUEST_URI']; ?&gt;&quot;&gt;\n<\/code><\/pre>\n<p>Diese Ausgabe geh\u00f6rt da nicht hin, die \u00dcbergabe geh\u00f6rt gefiltert. Daher ist folgender Syntax zu nutzen.<\/p>\n<pre><code>\n&lt;form method=&quot;get&quot; id=&quot;searchform&quot; action=&quot;&lt;?php bloginfo('url'); ?&gt;\/&quot;&gt;\n<\/code><\/pre>\n<p>Muss unbedingt mir <code>$_SERVER<\/code> gearbeitet werden, dann ist die Filterung der Daten anzuraten.<\/p>\n<pre><code>\n&lt;form method=&quot;get&quot; id=&quot;searchform&quot; action=&quot;&lt;?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?&gt;&quot;&gt;\n<\/code><\/pre>\n<\/li>\n<li>\n<h3><code>echo $s<\/code> pr\u00fcfen<\/h3>\n<p>\u00c4hnlich verh\u00e4lt es sich mit der Ausgabe des Suchsyntax. Dabei handelt es sich um eine \u00dcbergabe von Nutzerwerten, die schnell zu einer <a href=\"https:\/\/bueltge.de\/cross-site-scripting-xss\/477\/\">XSS<\/a>-L\u00fccke werden. Daher gilt auch hier das Filtern der Eingabe.<\/p>\n<p>Vielfach in der <code>searchform.php<\/code> einiger Themes zu finden.<\/p>\n<pre><code>\n&lt;input type=&quot;text&quot; value=&quot;&lt;?php echo $s; ?&gt;&quot; name=&quot;s&quot; id=&quot;s&quot; \/&gt;\n<\/code><\/pre>\n<p>Die L\u00f6sung k\u00f6nnte, mit Sicherheitsm\u00f6glichkeiten von WordPress genutzt, wie folgt aussehen.<\/p>\n<pre><code>\n&lt;input type=&quot;text&quot; value=&quot;&lt;?php echo attribute_escape($s, 1); ?&gt;&quot; name=&quot;s&quot; id=&quot;s&quot; \/&gt;\n<\/code><\/pre>\n<p>Alternativ kann auch die Verwendung der Funktion <code>the_search_query()<\/code> genutzt werden.<\/p>\n<pre><code>\n&lt;?php the_search_query(); ?&gt;\n<\/code><\/pre>\n<\/li>\n<li>\n<h3>Konstanten nutzen<\/h3>\n<p>Es empfiehlt sich die Nutzung von Konstanten und nicht die \u00dcbergabe einer Variable als Pfadangabe. WordPress stellt daf\u00fcr im Standard eine ganze Reihe von M\u00f6glichkeiten zur Verf\u00fcgung.<\/p>\n<ul>\n<li><code>TEMPLATEPATH<\/code><br \/>\nOrdner des aktiv genutzten Theme<\/li>\n<li><code>STYLESHEETPATH<\/code><br \/>\nOrdner des Stylesheets des aktiv genutzten Themes<\/li>\n<li><code>ABSPATH<\/code><br \/>\nOrder der WP-Installation, dort, wo die <code>wp-config.php<\/code> liegt<\/li>\n<li><code>WPINC<\/code><br \/>\nOrdner <code>wp-includes<\/code><\/li>\n<li><code>PLUGINDIR<\/code><br \/>\nOrdner <code>wp-content\/plugins<\/code><\/li>\n<\/ul>\n<\/li>\n<li>\n<h3>Pr\u00fcfen<\/h3>\n<p>Der <a href=\"http:\/\/blogsecurity.net\/cgi-bin\/wp-scanner.cgi\">WP-Scanner<\/a> von BlogSecurity pr\u00fcft die genannte Sicherheitsl\u00fccke aus Punkt 1. Es empfiehlt sich diesen Scanner zu nutzen.<\/p>\n<p>Um das eigene Blog zu scannen, muss lediglich ein Kommentar in der <em>header.php<\/em> bzw. <em>index.php<\/em>, falls es keine <em>header.php<\/em> gibt, hinterlegt werden.<br \/>\n<code>&lt;!-- wpscanner --&gt;<\/code><\/p>\n<\/li>\n<\/ol>\n<h3>Weitere Artikel und Referenzen<\/h3>\n<ul>\n<li>BlogSecurity: <a href=\"http:\/\/blogsecurity.net\/wordpress\/article-070607\/\">Common WP Theme Vulnerabilities<\/a><\/li>\n<li><a href=\"http:\/\/wordpress-buch.bueltge.de\/wordpress-sicherer-machen\/30\/\">WordPress Installation und Betrieb sicherer machen<\/a><\/li>\n<li><a href=\"https:\/\/bueltge.de\/wordpress-plugin-sicherheitsmoeglichkeiten\/539\/\">WordPress Sicherheitsm\u00f6glichkeiten und PHP<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Egal ob die Verwendung eines freien, kommerziellen oder selbst erstellten Themes in deinem Weblog zur Verwendung kommt, man kann mittels PHP viele sch\u00f6ne und n\u00fctzliche Funktionen einbauen. Aber durch diese M\u00e4chtigkeit kann man ebenso einfach und unbewusst Sicherheitsl\u00fccken in das System holen. Damit soll keine Angst vor dem Erstellen und \u00c4ndern von Themes und Templates&hellip; <a class=\"more-link\" href=\"https:\/\/bueltge.de\/wordpress-buch\/wordpress-templates-sicherer-machen\/\"><span class=\"screen-reader-text\">WordPress Templates sicherer machen<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":813,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[17],"class_list":["post-115","post","type-post","status-publish","format-standard","hentry","category-mehrwert","tag-sicherheit","entry"],"_links":{"self":[{"href":"https:\/\/bueltge.de\/wordpress-buch\/wp-json\/wp\/v2\/posts\/115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bueltge.de\/wordpress-buch\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bueltge.de\/wordpress-buch\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bueltge.de\/wordpress-buch\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/bueltge.de\/wordpress-buch\/wp-json\/wp\/v2\/comments?post=115"}],"version-history":[{"count":0,"href":"https:\/\/bueltge.de\/wordpress-buch\/wp-json\/wp\/v2\/posts\/115\/revisions"}],"wp:attachment":[{"href":"https:\/\/bueltge.de\/wordpress-buch\/wp-json\/wp\/v2\/media?parent=115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bueltge.de\/wordpress-buch\/wp-json\/wp\/v2\/categories?post=115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bueltge.de\/wordpress-buch\/wp-json\/wp\/v2\/tags?post=115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}