Browsing all articles in PHP
Jul
21

Sicherheit bei Zend_Form

Das Zend Framework bietet viele Möglichkeiten uns Arbeit abzunehmen und vergisst dabei auch die Sicherheit nicht. Allerdings bin ich nun schon öfters auf Quellcode getroffen bei dem der Form-Teil des Zend Frameworks falsch eingesetzt wurde. So erfüllt Zend_Form auch den Zweck, dass wir sichere Inhalte von Elementen erhalten. Man kann auch Filter anwenden. Aber all dies bringt nichts, wenn man dann doch direkt auf die Werte über die globale $_POST zugreift. Man hat davon einfach nichts. Die Werte wurden nicht überprüft, sind damit unsicher, und sind durch keine Filter gelaufen.

Deshalb der Appell an jene, die die Bibliothek es falsch verwenden.

FALSCH:

if ($form->isValid) {

$objekt = new Test_Object();
$objekt->property1 = $_POST['property1'];

}

RICHTIG:

if ($form->isValid) {

$objekt = new Test_Object();
$objekt->property1 = $form->getValue('property1');

}
Jun
27

Erweiterung der WordPress XML-RPC-Schnittstelle

Ich stand vor kurzem vor dem Problem, dass ich Daten von WordPress in einem anderen Projekt haben wollte. Es ging mir einfach darum die Posts einer Kategorie auszulesen und dort anzuzeigen. Natürlich griff ich damit auf die XML-RPC-Schnittstelle von WordPress zurück, da man nicht den Weg über die Datenbank gehen sollte. Die Datenbanken liegen zwar auf dem gleichen Server, aber irgendwo sollten die Projekte getrennt sein. Es macht auch keinen Sinn die WordPress-Datenbank auszulesen, wenn ein abhängiges Projekt einmal auf einen anderen Server wechseln sollte.

Das Einarbeiten in die Schnittstelle ist recht simpel. WordPress selber bietet dafür zwar wenig Hilfe, aber mit etwas Geschick findet man sie im Netz. Leider ist die Schnittstelle aber nicht gerade ausgereift und liefert allerlei Lücken und Unstimmigkeiten. Zum Beispiel ist die Übertragung von Benutzernamen und Passwort unterschiedlich. Es gibt Funktionen, da muss man erst den Benutzernamen und dann das Passwort übertragen, aber wiederum gibt es Funktionen bei denen man erst eine BlogId (Es war wohl einmal angedacht mehrere Blogs über eine Plattform betreiben zu können) und dann erst Benutzernamen und Passwort übertragen. Dann gibt es auch noch Funktionalitäten, die man eigentlich erwartet, die aber gar nicht Verfügbar sind.

Es gibt keine Funktion in der Schnittstelle um die Posts einer Kategorie abzurufen. Um diese Tücken zu umgehen kann man sich auf einen recht einfachen Wege eine Erweiterung der Schnittstelle entwickeln. Ich habe mich entschlossen dieses über ein Plugin zu tun. Das brachte dann auch schnell den Vorteil mit, dass ich Objektorientiert an die Sache herangehen konnte.

weiterlesen

Mai
9

Zend Acl mit Ini Konfiguration und Resourcen

Ich hatte bereits einmal einen Artikel über eine Acl mit INI Konfiguration. Dort gab es einen Kommentar von evilmonkey, den ich sehr anregend fand und mir nun einmal die Zeit genommen habe diesen umzusetzen.

Die Konfiguration basiert auf einer Zend_Acl und wird mit einer Ini Datei über Zend_Config_Ini befüllt. Das ganze funktioniert als Resource mit dem Bootstrapping. Vielleicht ist es für den ein oder anderen eine Anregung.

weiterlesen

Nov
22

Übersetzung ohne ViewHelper

Jeder, der mit Übersetzungen, im Zend Framework arbeitet kennt es. Das lange ungetüm, das es braucht um einen einzelnen String im View zu übersetzen. Dafür gibt es aber eine Lösung, eine Kurzfassung, die ich hier vorstellen will. Das Zend Framework bietet einem Filter für den View. Filter, die nach dem Rendern eines Views ausgeführt werden und zum Ziel haben die Ausgabe im Nachhinein zu verändern. Einen solchen Filter stelle ich hier nun zur Verfügung.

weiterlesen

Nov
18

Translate Resource

Oftmals wird hier im Blog das Thema Zend_Translate angesprochen. Die bisherigen Themen dazu sind aber leider entsprechend veraltet und so soll hier auch in diesem Bereich etwas Moderne den Einzug halten. Ich habe für mein kleines Projekt eine eigene Translate Resource mit Modulfähigkeit geschrieben. Im Folgenden will ich ein kurzes Beispiel zur Verwendung der Resource bringen. Es ist dabei unbedingt zu beachten, dass ich in dieser einfachen Version der Resource auf Exceptions verzichtet habe. Diese werden im Laufe der Zeit noch dazu kommen, ebenso wie die nötige Cache Funktionalität. Mein Beispiel basiert auf TMX Dateien, welche ich persönlich empfehle, da sie XML Dateien sind und somit leicht über ein entsprechendes Frontend zu bearbeiten sind. Dieses kann sich zum Beispiel im Adminbereich einer Website finden.

Nun beginnen wir.

Ich will im View einen String ausgeben. Natürlich verwende ich dafür den entsprechenden ViewHelper. Wenn man dies jedoch einbaut, dann wird man feststellen, dass es keine Übersetzung gibt, sondern der String an sich ausgegeben wird.

< ?php echo $this->translate('testMessage'); ?>

Um nun der Applikation die Mehrsprachigkeit hinzuzufügen braucht es einige erst einmal der Resource, die sich am Ende dieses Artikels findet. Ich gehe davon aus, dass hier ein Basiswissen Resourcen besteht und man weiß, wie man sie einbindet. Um die Resource zu aktivieren und zu konfigurieren braucht es in der Konfigurationsdatei der Applikation, bei mir die application.php, einiger Variablen.

weiterlesen