Beitrags-Archiv für die Kategory 'Entwicklung'

Gute und schnelle Einführung in Java JUnit 4 Tests

Saturday, 20. September 2008 9:36

Wie JUnit Tests zum testen von Java-Klassen und Methoden ablaufen erfährt man in dem englischsprachigen Tutorial auf cavdar.net in angeblich nur 60 Sekunden. Sehr empfehlenswert für alle Java Entwickler, die sich bisher nicht mit dem Thema auseinander gesetzt haben.

Thema: Entwicklung | Kommentare (0) | Autor: admin

PHP - Code Injection Angriffe

Friday, 18. July 2008 10:45

Einige Personen sind der Meinung, dass PHP per se eine unsichere Programmiersprache ist. Wie kommt man darauf? Die Sprache kann IMHO nur insoweit etwas für Ihren Ruf, als dass sie es dem Programmierer erlaubt ziemlich einfach komplexe Operationen aneinanderzureihen, die im Zusammenspiel dann zum Sicherheitsloch werden.

Wie läuft eine PHP Code Injection grundsätzlich ab? Wie auf Glorf IT erwähnt gibt es jede Menge Angreifer, die versuchen durch automatische Spider das Web nach Sicherheitslöchern abzugrasen um diese anschließend auszunutzen. Nicht selten versuchen sie durch Übergabe einer Adresse in der URL z.B. http://www.alin.eu/?link=http://boeseseite/boesesscript.php ein boeses Skript auf meinem Server auszuführen. Solche Aufrufe findet man fast häufiger im Serverlog als richtige Seitenzugriffe von Besuchern.

Wenn man im PHP Code nun so etwas wie include($_GET[link]) stehen hat, was manche Content Management Systeme hin und wieder tatsächlich verwenden um Inhalt aus anderen Dateien einzubinden, wird der Schadcode vom fremden Server hereingeladen. Es kann beliebiger schädlicher PHP-Code ausgeführt werden.

Gegen solche Angriffe kann man sich noch relativ einfach schützen, indem man in der php.ini den Eintrag allow_url_fopen=On auf allow_url_fopen=Off setzt. Dann können keine Dateien mehr von anderen Servern aufgerufen werden. Nachteil: Auch alle anderen PHP Skripte können nicht mehr auf Dateien von anderen Servern zugreifen. Zudem kann der Angreifer immer noch Code ausführen, wenn er an anderer Stelle die Gelegenheit bekommt Dateien auf den Server abzulegen. Ein typischen Fall wie das funktioniert ist im Flashforum humorvoll erklärt.

Eine wie ich behaupte sichere Methode ist es, die Benutzereingaben nicht direkt zu verwenden, sondern sie zum Beispiel über ein assoziatives Array einer vorgegebenen Seite zuzuordnen.


$arraymap = array(
'index' => 'index.php',
'impressum' => 'impressum.php',
//usw
);

if(!empty($_GET['link']) && isset($inclmap[$_GET['link']])) {
$content = $arraymap[$_GET['link]];
} else {
//Startseite aufrufen oder 404
}

include($content);

Natürlich gibt es noch viele weitere Angriffsmöglichkeiten im Zusammenhang mit PHP. Auf nettuts.com wird eine kleine Übersicht gegeben.

Weitere Sicherheitslücken die nicht direkt etwas mit PHP zu tun haben, aber häufig in interaktiven Webumgebungen anzutreffen sind Cross-Site-Scripting (XSS) Lücken. (siehe Wikipedia)

Auch Wordpress Blogs sind immer mal wieder Opfer von solchen Angriffen. Wie man sein Wordpress Blog einigermaßen vor Angriffen schützt erfährt man bei brajeshwar.com (Englisch).

Ich erhebe mit dem Tutorial natürlich keinen Anspruch auf Vollständigkeit. Kommentare und Hinweise sind herzlich erwünscht.

Thema: Entwicklung | Kommentare (1) | Autor: admin

PHP komfortabel debuggen mit Firebug

Wednesday, 28. May 2008 21:03

Mithilfe der Firefox Extension ‘Firebug‘ lassen sich PHP-Skripte einfach debuggen. Lästige ‘echo’ Ausgaben von fehlerträchtigen Variablen entfallen somit. Damit man dies nutzen kann muss man allerdings erst eine PHP PEAR Erweiterung auf dem Webserver installieren, die PHP-Dateien anpassen und natürlich das Firefox-Plugin installieren.

Eine deutsche Anleitung hierzu findet man bei alldev.de!

Zur Extension ‘Firebug’ gibt es mittlerweile eine Reihe von nützlichen Erweiterungen die einen die Arbeit beim PHP-programmieren erleichtern. So kann man zum Beispiel mittels Firecookie Cookies einer Webseite bearbeiten, löschen und anlegen. Mithilfe der Logfunktion kann man alle Cookie-Manipulationen durch eine Webseite protokollieren.

Thema: Entwicklung, Webentwicklung - Fehlerbehebung | Kommentare (0) | Autor: admin

Den Funktionsumfang von PHP durch PEAR erweitern

Wednesday, 28. May 2008 21:02

PEAR (PHP Extension and Application Repository) ist eine Bibliothek von Modulen und Erweiterungen für die Skriptsprache PHP. PEAR ist in Bezug auf PHP vergleichbar mit Standardbibliotheken wie die „Standard C Library“ für C oder das Swing-Framework in Java.

Neben PEAR gibt es auch noch PECL (Die PHP Extension Community Library), sie ist ein ehemaliger Teil von PEAR, die nur C-Erweiterungen anbietet. Sie wurde im Oktober 2003 aus PEAR ausgegliedert und wird nun als eigenständiges Projekt fortgeführt.

Einen Überblick über die PEAR Funktionen findet man in diesem E-Book:
http://www.galileocomputing.de/openbook/php_pear/

Wie PEAR installiert wird hängt davon ab, ob man einen eigenen Webserver besitzt oder auf den Webspace bei einen Shared Webhost verwendet. Das eigentliche Installationstool steht zum Download auf http://pear.php.net/ bereit. Die heruntergeladene Datei PEARinstaller.php muss wie jede andere PHP Datei über den Webbrowser per HTTP aufgerufen werden und führt den Anwender komfortabel mittels eines Installationsassistenten.

Fehler bei der Installation unter SuSE:
Vermisst man nach der Installation des PEAR Pakets unter SuSE den Kommandozeilenbefehl ‘pear’, der zur Konfiguration der pear Installation verwendet wird, sollte man den Befehl rpm -ql php5-pear verwenden um alle Dateien einsehen zu können, die von SuSE für das Packet ‘php5-pear’ installiert wurden.

Es fällt die Datei /usr/bin/pear5 auf. Das Konfigurationsprogramm wurde anscheinend ab der PHP Version 5 in ‘pear5′ umbennant!

Man verwendet also zur Konfiguration und Einbindung von PEAR-Paketen den pear oder pear5 Befehl.

Wenn man alles richtig gemacht hat, kann man nun die PEAR-Pakete einfach per include() in die PHP-Dateien einfügen. Sollte aber noch ein Fehler ala:

failed to open stream: No such file or directory

auftreten, so liegt das daran, dass das Verzeichnis in welchem PEAR die eingebundenen PEAR-Pakete (also die PHP-Dateien) nicht im Suchverzeichnis der PHP-Installation liegen oder man den Safe-Mode aktiviert hat (Den pear5 Befehl aber als anderer Benutzer als der Benutzer des Webservers ausgeführt hat). Abhilfe schafft man am einfachsten indem man die php.ini öffnet und den Suchpfad anpasst.

Kurze Schritt für Schritt Anleitung für Anfänger für Apache Benutzer:
1. php.ini Datei mit dem Befehl: find / -name “php.ini” im gesamten Dateisystem suchen.
2. Die gefundene php.ini Datei mit einem beliebigen Texteditor öffnen , je nach Verzeichnis sieht das so aus: vi /etc/php5/apache2/php.ini oder für Windowsuser: Einfach mit WinSCP öffnen.
3. Die Zeile mit “safe_mode_include_dir” muss man wie folgt ergänzen: safe_mode_include_dir = “.:/usr/share/php5:/usr/share/php5/PEAR”
4. Die Zeile mit “include_path” muss ebenfalls überprüft werden, ob die Pfade richtig angegeben wurden
5. Damit die Änderungen wirksam werden: Mit “httpd2 -k restart” den Apache 2 neu starten

Es empfielt sich vorher eine Sicherungskopie der php.ini anzulegen!

Thema: Entwicklung | Kommentare (0) | Autor: admin

Freie PDF-Bibliothek für Java

Tuesday, 20. May 2008 18:45

Um Informationen aus PDF-Dateien zu extrahieren, PDF-Dateien mittels Java zu erstellen oder um unter Java drucken zu können eignet sich die mächtige Bibliothek PDFBox.

Nach dieser Anleitung lässt sie sich recht leicht verwenden:
1. Man läd sich die aktuelle Version bei Sourceforge herunter (in diesem Beispiel wurde die 0.73er verwendet):

Kommandozeilen Programme finden
2a. Im Ordner bin befinden sich Kommandozeilen-Programme mit denen man pdf Dateien verschlüsseln, entschlüsseln, die Bilder oder den Text aus der PDF-Datei extrahieren kann. Wer keine Java Programmierkenntnisse hat kann die fertigen Programme einfach über die Kommandozeile ausführen. Zuvor muss das Archiv natürlich entpackt werden. Mehr Informationen dazu findet man auf der PDFBox Webseite unter Command Line Utilities.

Die Einbindung der Bibliothek in Java Eclipse Projekte (Beispielhaft für Windows)
2b. Wer die Bibliotheken benötigt um eigene Software zu schreiben, extrahiert aus dem heruntergeladene ZIP-Archiv einfach die .jar-Datei aus dem lib Verzeichnis. Diese Datei kann man nun zum Beispiel in das Plugin-Verzeichnis von Eclipse kopieren.

3b. In Eclipse erstellen wir ein neues Projekt und geben in den “Projekt Java Settings” unter dem Reiter “Jars” (am einfachsten gelangt man bei bereits bestehenden Projekten dahin, wenn man das Projekt im Baum anklickt und auf Properties->Java-Build-Path->Libraries klickt) mithilfe des Buttons “Add-External-Jars” suchen wir die Jar-Datei im Eclipse/Plugin Verzeichnis und fügen sie der Liste hinzu (hätten wir die .jar Datei ins Projektverzeichnis kopiert kann man auch mit “Add Jars” arbeiten).

4b. Wir legen eine Klasse zum Testen an. Wer mag kann hier ein fertiges Beispiel aus dem heruntergeladenem ZIP-Archiv verwenden. Die Beispiele befinden sich im Ordner /src/examples/

Meistens findet man bereits ein Beispiel was recht gut zu dem passt was man vor hat. Bei den Beispielen sollte man aber nicht vergessen, den Namen der zu bearbeitenden PDF Datei als Übergabeparameter an die Klasse zu übergeben ;).

Thema: Administration, Entwicklung | Kommentare (3) | Autor: admin

Reguläre Ausdrücke einfach validieren

Sunday, 18. May 2008 22:02

Schnell passieren bei regulären Ausdrücken Fehler. Wer sie vermeiden will sollte diesen Validator für Reguläre Ausdrücke probieren.

Der REGEX Validator

Zu empfehlen ist auch das Tutorial auf dieser Webseite.

Bild von geekandpoke :)

Thema: Entwicklung | Kommentare (0) | Autor: admin

Serielle Schnittstelle unter Java ansprechen

Tuesday, 6. May 2008 20:28

Leider hat Sun seinen Support für die offizielle Bibliothek CommAPI unter Windows eingestellt. In den Anfangszeiten von Java beklagten sich die Benutzer noch darüber, dass die Bibliothek keine Linux Unterstützung bot, nun ist zwar die Linux Version vorhanden, aber keine Windows Version mehr.

Das Projekt RXTX hat diese Bibliothek nachgebildet und stellt sie unter der GPL bereit.

http://rxtx.org/

Damit man sie zum Beispiel in Eclipse zum laufen bekommt, muss man die DLL-Dateien in den “Project”-Einstellungen in den Suchpfad einbinden. Am Einfachsten geht es aber, wenn man die DLLs direkt im System32 Verzeichnis platziert. Bekommt man das kleine - auf der Webseite vorgestellte - Demoprogramm zum Laufen kann man immer noch mit dem Suchpfad experimentieren. Die Bibliothek arbeitet recht schön, beim ersten Einbinden in Eclipse ist Frust mit den Suchpfaden aber vorprogrammiert.

Thema: Entwicklung | Kommentare (2) | Autor: admin

blogoscoop
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien: