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');
}
RolePlace – Eine Idee, die Wahrheit wird
Es war nur eine Idee als ich mich vor einer Weile fragte warum ich eigentlich nirgendwo meine Charaktere präsentieren kann, die ich in verschiedenen Spielen mir immer wieder überlegt habe. Ich könnte darüber bloggen oder in Foren schreiben, aber warum? Wohl aus dem gleichen Grunde wie die Menschen beschließen zu bloggen habe ich dann den Entschluss gefasst eine Platform aufzubauen, die es mir ermöglicht meine Charaktere zu präsentieren. Dabei sollte es aber nicht bleiben, da vielleicht ja auch andere solche Gedanken haben wie ich, also war daraus schnell RolePlace geboren.
Wichtig war mir dabei, dass die Leute anonym bleiben. Aus diesem Grunde stand der Benutzer von Anfang an für mich nicht im Zentrum. Der Benutzer existiert am Ende nur um seine Charaktere zu erstellen und mit Leben zu befüllen. Daher benötigt man zur Anmeldung auch nur seine E-Mail-Adresse und ein Passwort. Um das ganze zu vereinfachen wurden Registrierung und Login selbstredend verienheitlicht. Auf der Startseite. Man braucht nicht lange suchen und nicht lange nachdenken. Und überhaupt ist nicht einmal die E-Mail-Adresse wichtig. Sie wird nicht geprüft und nicht entfernt. E-Mail-Adressen werden nicht an Dritte weitergegeben, aber wer sich dessen zu 100% sicher sein will kann natürlich eine falsche E-Mail-Adresse als Benutzernamen wählen. Wie shcon erwähnt. Es geht um die Charaktere und nicht um den Benutzer.
Natürlich braucht so ein Projekt mehr als eine HTML-Seite auf der man alles aufzeigt. Sie sollte alle modernen Elemente beinhalten, doch einige Kernelemente waren für mich von vornherein klar:
- Bilder
- Eigenschaften
- Geschichten
- Neuigkeiten
- Freunde
Da ich aber nicht perfekt bin und eure nicht missachten will gibt es natürlich die Möglichkeit auf die Entwicklung von RolePlace Einfluss zu nehmen. Über ein Formular könnt ihr eure Ideen einreichen sobald die Registrierung eröffnet ist. Auch über Hilfe bei Entwicklung und Design wäre ich dankbar. Man sieht ja, dass ich kein Profi in Sachen Design bin. Das haben wir Entwickler wohl an uns, dass nicht alle auch noch designtechnisch kreativ sein können. Wenn du meinst sich bei diesem Projekt einbringen zu wollen kannst du dich gerne melden. Optimal wäre es natürlich, wenn du aus Berlin bist. Der persönliche Touch ist doch bei einem gemeinsamen Projekt immer am besten.
Zuletzt möchte ich noch auf die Registrierung eingehen. Diese wird mit der Fertigstellung von v0.5 “Morpheus” eröffnet werden. Geplant ist dies zu Mitte bis Ende August. Darin enthalten sollen vorerst wichtige Kernelemente sein um deinen Charakter gestalten zu können. Wenn du dich bis dahin einbringen möchtest, dann solltest du dich einfach bei mir melden. Wie? Am besten per E-Mail an d.zunke@roleplace.de
Über diesen Blog halte ich euch auf dem Laufenden!
Widgets über ActionHelper
Nach dem Artikel “Ein Widget-System” auf meinem Blog wurde mir zugetragen, dass Matthew Weier O’Phinney ebenso ein Konzept für Widgets vorgetragen hat. Seines jedoch basiert auf Action Helpern.
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.
Ein Widget-System
Ein Widget-System wirft zu vorderst die Frage auf: “Hä? Wozu? Was ist das”, doch dahinter verbirgt sich eine einfache Logik. Das Zend Framework bietet bereits Action- und ViewHelper, die natürlich in ihren jeweiligen Bereichen sehr praktisch sind. Wenn es aber an ein CMS-System geht in dem man den Usern die Möglichkeit bieten möchte ebenso Helper in die Seiten einzubinden, dann kann man ihnen unmöglich erlauben einfach auf diese normalen Helper zuzugreifen. Für diesen Fall benötigt man ein eigenständiges System um die Stabilität des Gesamtsystems zu garantieren. Konsistenz ist nur einer der Vorteile, die natürlich wahrlich Subjektiv und Einsatzabhängig sind.
