Kategorie: Coding

WordPress REST-API deaktivieren

WordPress Logo

Die WordPress REST-API ist ein spannendes Thema. Grundsätzlich soll die API eine einfach zu erweiternde Schnittstelle für die Kommunikation mit anderen Programmen bereitstellen. Mit WordPress Version 4.4 wurde die grundlegende REST-API-Infrastruktur in den WordPress-Core integriert. Die gestern veröffentlichte Version 4.7 integriert sogenannte Inhalts-Endpunkte, welche bisher nur über ein separates Plugin vorhanden waren. Durch die Endpoints können andere Programme mit WordPress interagieren und bestimmte Informationen ein- oder auslesen.

Die REST-API ist unter der URL „http://www.meine-seite.de/wp-json/“ erreichbar. Das Auslesen der Artikel ist beispielsweise folgendermaßen möglich: „https://www.meine-seite.de/wp-json/wp/v2/posts“.

Wer eine Webseite mit WordPress betreibt und die REST-API nicht nutzt, möchte die API vielleicht lieber deaktivieren. Die API komplett zu deaktivieren ist keine gute Idee, da mittlerweile immer mehr Funktionen im Backend die REST-API benötigen. Allerdings lässt sich die API so umbiegen, dass sie nur von angemeldeten Benutzern verwendet werden kann. Dies ist relativ einfach möglich und erfordert nur ein paar Zeilen Code, die in der „functions.php“ eures Themes bzw. Child-Themes eingefügt werden müssen.

/* ------------------------------------------------------------------------- *
* Returning an authentication error if a user who is not logged in tries to query the REST API
/* ------------------------------------------------------------------------- */
function only_allow_logged_in_rest_access( $access ) {
    if( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_API_cannot_access', 'Only authenticated users can access the REST API.', array( 'status' => rest_authorization_required_code() ) );
    }
    return $access;
}
add_filter( 'rest_authentication_errors', 'only_allow_logged_in_rest_access' );

remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );

Die unteren drei Zeilen sorgen dafür, dass der Ausgangspunkt der REST-API nicht im Quellcode, Header und unter der XMLRPC-Schnittstelle publiziert wird.

Kategorien: Coding Wordpress

Windows 8 Design mit CSS3 und jQuery nachbauen

Nach gefühlten 100 Jahren mal wieder ein Artikel von mir über das Thema Web-Design. Bei Google+ hat Sergej heute einen Link gepostet, den ich sehr interessant fand: „Windows 8 Animations„.

Wie der Name schon sagt geht es um die neue Windows 8 Oberfläche und wie man diese mit HTML5, CSS3 und JavaScript bzw. jQuery realisieren kann. Neben dem ausführlichen Tutorial ist auch ein Demo vorhanden, welche das beeindruckende Ergebnis zeigt. Die Demo läuft in aktuellen Versionen von Firefox, Opera, Chrome und Safari. Ebenso im Internet Explorer 10.

Zum Tutorial „Windows 8 Animations“

Amazon Web Services Tutorials

Unter dem Namen Amazon Web Services (AWS) bietet der weltbekannte Internetshop eine Sammlung verschiedener Webservices als Cloud-Lösung an. Viele Entwickler setzen auf die recht günstigen und vor allem zuverlässigen Dienste von Amazon.

In seinem Amazon Web Services Blog hat der Internetriese nun eine Übersicht mit Artikeln, Tutorials und Videos zusammengestellt, die im Jahr 2012 veröffentlicht wurden. Ein Muss für Cloud-Entwickler und welche, die es noch werden wollen.

Kategorien: Coding Internet

Mit w3af Webseiten auf Schwachstellen untersuchen

Das „Web Application Attack and Audit Framework“ (w3af) ist ein kostenloses Tool, um Webseiten auf Sicherheitslücken und Schwachstellen zu untersuchen. Beispielsweise kann mit w3af SQL-Injection, Remote File Inclusion und Cross-Site-Scripting (XSS) getestet werden. Das Tool ist in Python geschrieben und kann sowohl per Kommandozeile, als auch mit einer grafischen Benutzeroberfläche bedient werden. w3af ist modular aufgebaut und beinhaltet mehr als 130 Plugins. Die integrierte Updatefunktion hält das Programm immer auf dem aktuellsten Stand.

Download w3af
w3af GUI

Tutorial Kommandozeile

Nachfolgend eine kurze Anleitung, wie eine Webseite mit w3af untersucht werden kann und die Ergebnisse als HTML-Datei ausgegeben werden.

  1. Zuerst muss das Ziel definiert werden.
    w3af>>> target
    w3af/config:target>>> set target http://localhost
    w3af/config:target>>> back
  2. Jetzt müssen die gewünschten Plugins ausgewählt werden. In meinem Beispiel nutze ich je zwei Plugins aus dem audit- bzw. discovery-Bereich. Außerdem definiere ich HTML als Ausgabeformat für die Ergebnisse.
    w3af>>> plugins
    w3af/plugins>>> audit htaccessMethods buffOverflow
    w3af/plugins>>> discovery phpinfo serverHeader
    w3af/plugins>>> output htmlFile
    w3af/plugins>>> back
  3. Anschließend wird der Scan gestartet.
    w3af>>> start
  4. Die Ergebnisse werden in der Datei „report.html“ gespeichert. In Windows ist die Datei unter dem Pfad „C:\Programme (x86)\w3af\w3af“ zu finden.

Durch die vielen verfügbaren Plugins lassen sich auch deutlich komplexere Untersuchungen durchführen. Eine genaue Erklärung würde jedoch die Länge des Artikels sprengen.

Vector Maps – SVG-Karten mit jQuery

Interaktive Karten auf Webseiten sind ein toller Blickfang und können für verschiedene Zwecke eingesetzt werden. Mit modernen Webtechnologien lassen sich mittlerweile vektorisierte Land- oder Weltkarten realisieren, komplett ohne Flash. Stattdessen kommt bei den beiden jQuery-Plugins jQuery Vector Maps und jVectorMap SVG und JavaScript zum Einsatz.

Die Plugins werden von Firefox, Chrome, Opera, Safari und IE9 unterstützt. jQuery Vector Maps ist dabei eine modifizierte Version von jVectorMap, mit einigen Veränderungen und neuen Funktionen. Beide Plugins bieten auf ihrer Homepage eine ausführliche Dokumentation und einige Beispielkarten an. So ist es unter anderem möglich, eigene Karten zu erstellen oder die Farben anzupassen.

jVectorMap – Weltkarte

Java – was sind Filter und Listener?

Wer sich mit Webprogrammierung in Java beschäftigt, wird früher oder später auf die Begriffe Filter und Listener stoßen. Ich möchte euch ganz kurz erklären, wobei es sich darum handelt.

Filter

Filter werden bei jedem Request vor und nach dem Servlet durchlaufen und können auf die Werte des Requests und der Response zugreifen und diese auch verändern. Dabei können mehrere Filter hintereinander geschaltet werden, die dann eine Filterkette bilden.

Anwendungsbeispiele:

  • Logging (welche Ressource wurde angesprochen, wie lange hat die Bereitstellung der Ressource gedauert)
  • korrektes Encoding für einen Request festlegen
  • Request entschlüsseln, Response verschlüsseln
  • Response komprimieren (deflate, gzip)
  • Transformation von XML mit Hilfe von XSLT

Listener

Listener sind Programmteile, die bei bestimmten Ereignissen automatisch aufgerufen werden.

Anwendungsbeispiele:

  • aktive Sessions verfolgen
  • herausfinden, wenn ein Attribut an eine Session gebunden wird

Kategorien: Coding

Feedreader zum selber hosten – Tiny Tiny RSS

Tiny Tiny RSS ist ein in PHP geschriebener webbasierter Open Source Feedreader. Er kann auf eigenem Webspace oder einem eigenen Server installiert werden und ist daher eine gute Alternative zum Google Reader. Der Hauptvorteil liegt darin, dass man unabhängig von Diensten Dritter ist und die volle Kontrolle über seine Daten behält.

Obwohl die Installation manuell erfolgen muss, ist Tiny Tiny RSS schnell ein­ge­rich­tet. Bestehende Feeds bei Google Reader kann man bequem als OPML-Datei exportieren und in Tiny Tiny RSS importieren. Durch die zahlreichen Einstellungsmöglichkeiten lässt sich der Reader sehr gut individualisieren. Unter anderem ist es möglich Tiny Tiny RSS als Standard-Feedreader für den Firefox einzurichten. Zudem wird Unterstützung für mehrere Benutzer geboten.

Die Oberfläche ist übersichtlich und reagiert flott auf Benutzereingaben. Alles in allem ist Tiny Tiny RSS eine ernsthafte Alternative zum Google Reader.

Zu Tiny Tiny RSS

Basis Theme für WordPress

Es existieren verschiedene Möglichkeiten ein eigenes Themes für WordPress zu entwickeln. Vom komplett eigenen Aufbau über die Verwendung von Frameworks und die Modifikation bestehender Themes, ist so gut wie alles möglich. Eine sinnvolle Alternative ist das WordPress Basis Theme.

Wie der Name schon vermuten lässt, stellt das Basis Theme ein schlankes Grundgerüst für einen einfachen Start bereit. Die Vorlage lässt sich leicht den eigenen Bedürfnissen anpassen und bietet auch schon einige wichtige Grundfunktionen.

Das Basis Theme wird regelmäßig aktualisiert und ist bereits in HTML5 verfasst. Auch CSS3 Media Queries, um das Design automatisch auf mobile Endgeräte anzupassen, sind bereits definiert.

Download WordPress Basis Theme (automatisch die aktuellste Vesion)
Homepage des WordPress Basis Theme

Kategorien: Coding Wordpress

RailsInstaller 2 für Windows

Vor ein paar Monaten habe ich beschrieben, wie ihr Ruby on Rails 3 unter Windows von Hand installieren könnt.

Mittlerweile ist Version 2 des RailsInstallers erschienen. Im Regelfall würde ich das Tool der manuellen Installation von Ruby on Rails 3 vorziehen. Neben dem Update auf Ruby 1.9.2 ist in der neuen Version auch bereits Rails 3.1 enthalten. Außerdem ist TinyTDS enthalten, wodurch mittels FreeTDS eine MSSQL-Datenbank genutzt werden kann. Alternativ kann auch das integrierte SQLite in Version 3.7.3 verwendet werden.

Download RailsInstaller

Java 7: Verbesserungen an der Programmiersprache

Nach mehr als fünf Jahren Entwicklungszeit erschien vor kurzem Java in Vesion 7. Insgesamt enthält die neue Version rund 9.500 Verbesserungen. Nachfolgend eine Liste der wichtigsten Neuerungen:

  • neue API für Dateisystem-Operationen (NIO.2)
  • neue API für Multi-Core-Systeme
  • neuer Garbage Collector (G1)
  • verbesserten Unterstützung von dynamischen Programmiersprachen (Ruby, Python und Javascript)
  • Unterstützung von Unicode 6.0
  • Überarbeitung zahlreicher Bibliotheken

Eine detaillierte Übersicht aller Neuerungen findet ihr in den Release Notes.

Programmieren in Java soll leichter werden

Zu den oben genannten großen Änderungen kommen noch einige kleinere Verbesserungen, die vor allem das Programmieren in Java erleichtern sollen. Nachfolgend ein paar Beispiele.

Numerische Literale lassen sich nun neben der dezimalen (36), hexadezimalen (0x24) sowie oktalen (044) auch in der binären (0b100100) Schreibweise definieren.

[sourcecode language=“java“]public static final float PI = 3.141592f;
int decimal = 36;
int hex = 0x24;
int octal = 044;
int binary = 0b100100;
[/sourcecode]

Zur besseren Lesbarkeit dürfen numerische Literale nun mit Unterstrichen versehen werden. Allerdings nicht am Anfang oder am Ende und an zweideutigen Stellen, wie beispielsweise vor oder nach dem „x“ in der hexadezimalen Schreibweise. Der Compiler entfernt beim Parsen die Unterstriche.

[sourcecode language=“java“]int longBinary = 0b1001_0011_0110_1011;
int longHex = 0xAA33_BE41;
int million = 1_000_000;[/sourcecode]

Das Anlegen von Objekten mit generischen Parametern wurde durch die Einführung des Diamond-Operators (<>) erleichtert. Auf der rechten Seite muss die Zuweisung nicht mehr wiederholt werden. Dadurch spart man sich Tipparbeit und der Quellcode wird kürzer und übersichtlicher.

[sourcecode language=“java“]HashMap<String, List<Integer>> map = new HashMap<String, List<Integer>>();
HashMap<String, List<Integer>> map = new HashMap<>(); // kürzere Schreibweise
ArrayList<String> liste = new ArrayList<String>();
ArrayList<String> liste = new ArrayList<>() // kürzere Schreibweise;[/sourcecode]

Switch-Case-Anweisungen funktionieren ab Java 7 neben primitiven Datentypen nun auch mit Zeichenketten. Dabei wird der String im Switch-Ausdruck mit der Methode „equals“ mit dem Case-Fall verglichen. Anschließend gibt er die entsprechende Zahl zurück.

[sourcecode language=“java“]public static int getDay(String day) {
int dayNumber = 0;
if (day == null) { return dayNumber; }
switch (day.toLowerCase()) {
case "montag": dayNumber = 1; break;
case "dienstag": dayNumber = 2; break;
case "mittwoch": dayNumber = 3; break;
case "donnerstag": dayNumber = 4; break;
case "freitag": dayNumber = 5; break;
case "samstag": dayNumber = 6; break;
case "sonntag": dayNumber = 7; break;
default: dayNumber = 0; break;
}
return dayNumber;
}[/sourcecode]

Bei den Exceptions gibt es nun die Möglichkeit mehrere Exceptions in einem Catch-Block zu fangen. Zwischen den verschiedenen Typen steht dann jeweils ein OR-Zeichen (|). Sehr hilfreich um eine Aneinanderreihung von Catch-Blöcken zu vermeiden.

[sourcecode language=“java“]
try{
// …
} catch (IOException e) {
System.out.println("Operation xyz fehlgeschlagen: " + e);
} catch (ParseException e) {
System.out.println("Operation xyz fehlgeschlagen: " + e);
}

try {
// …
} catch (IOException | ParseException e) {
System.out.println("Operation xyz fehlgeschlagen: " + e);
}[/sourcecode]