Archiv der Kategorie ‘PHP‘

 
 

Wordpress: Remote Admin Reset Password Exploit | Wie es dazu kommen konnte

Wieder einmal eine Lücke in Wordpress. Ich mach mir mal die Mühe und zeige die Umstände wie es dazu kommen konnte.

Den ganzen Beitrag lesen...

PHP: Curl Handles schneller erzeugen durch Kopieren

Die cURL Bibliothek wir gern benutzt um Transfers in Netzwerken zu machen. Auch PHP hat ein cURL Modul welches viele Funktionen von cURL bietet. Um cURL zu nutzen muss dazu erst ein cURL Handle erzeugt werden, dem dann Optionen übergeben werden welche den Transfer beeinflussen.
Wer viele dieser Handles erstellen muss wäre nach meinem Benchmark schneller wenn er sich einen cURL Template Handle erstellt und diesen dann nur noch mit curl_copy_handle() kopiert und fehlende Optionen hinzufügt. Auf diese Weise kann man einen cURL Handle etwa 40% schneller erschaffen als es jedes mal komplett neu möglich ist.

Wer den Benchmark sehen will, einfach weiterlesen.

Den ganzen Beitrag lesen...

PHP: Objekte schneller erzeugen mit Caching

Gestern habe ich etwas über "static" Variablen in Funktionen geschrieben, heute kommt gleich eine praktische Anwendungsmöglichkeit.
Wer in seinen Scripten/Programmen oft viele Objekte erzeugen muss, der könnte dies locker 10% bis 30% schneller machen indem man fertige Objekte einfach cacht.
Wie das geht und was es bringt, einfach weiterlesen.

Den ganzen Beitrag lesen...

PHP: Das Schlüsselwort 'static' in PHP Funktionen

Wer in der PHP Dokumentation nach 'static' sucht wird diesen Artikel finden: http://www.php.net/manual/de/language.oop5.static.php
Was manche jedoch nicht wissen, das Wort 'static' kann auch in normalen Funktionen verwendet werden kann und dort eine ganz andere Bedeutung.

Den ganzen Beitrag lesen...

PHP: Variablen zu Boolean casten/convertieren

PHP ist eine dynamisch getypte Sprache. Der Wert einer Variable kann vom String zum Integer oder Float werden. Manchen Programmieren gefällt dies gar nicht, anderen umso mehr. Doch was viele nicht genau wissen ist, wie in PHP die einzelnen Typen zu boolean castet (convertiert).
Man findet die Antworten zwar in der PHP Dokumentation, doch damit sich das keiner antun muss dort extra zu suchen, nachfolgend ein kleines Script dass uns die Antworten liefert.

Den ganzen Beitrag lesen...

PHP-Pennerbot: Das neue Captcha für Pennergame ist bezwungen

Viele die meinen PHP-Pennerbot nutzen, oder die Klasse verwenden wird folgende Nachricht sicher freuen. Ich habe eine Klasse geschrieben die die aktuellen Pennergame Captchas brechen kann.

Den ganzen Beitrag lesen...

PHP: "Konstantes" Array in PHP - Benchmark

Ich hatte letztens das "Problem" ein Array/Liste in PHP Global zugänglich zu machen. Am liebsten natürlich noch dass man dessen Werte nicht verändern kann, es also mehr oder weniger konstant ist.


Den ganzen Beitrag lesen...

Server Response mitten im POST File Upload

Bei den aktuellen Arbeiten an einer Seite stieß ich auf folgendes Problem:
Beim Upload von Dateien soll eine maximale Dateigröße nicht überschritten werden.
Dazu fielen mir mehrere Möglichkeiten ein um diesen Check zu realisieren.

  • Per Javascript die Dateigröße checken, was aber viel zu unsicher ist und leicht umgangen werden kann.
  • Per PHP/Ruby/... die Größe der hochgeladenen Datei prüfen - Da die Datei bereits hochgeladen wurde hätte man dies auch gleich bleiben lassen können.
  • Dem Webserver eine maximale POST-Size mitgeben, bei Überschreitung macht dieser dann einen 3XXer Redirect oder zeigt eine Fehlerseite an.

Da die ersten beiden Fälle keinen Sinn machen oder zu Fehleranfällig sind , hab ich den letzten Ansatz weiter verfolgt und musste dabei folgendes feststellen:

Keiner der getesteten Browser hat sich während eines POST File Uploads dazwischenreden lassen.
Den Server habe ich einen 302 Header an die Browser senden lassen, während diese am Hochladen waren. FF und Opera haben stur Ihre "Connection Resettet" Fehlermeldung gezeigt und sich nicht um den 302er Haeder gekümmert.

Doch einzig Opera hat, beim, in dieser Situation, Standardkonformen 413er Header eine vom Server gesendete Seite angezeigt.

Diese Erkentnisse lassen mich jetzt die Maximale POSTsize auf ein relativ hohen Wert einstellen, der hoffentlich von nur recht wenigen Nutzern wirklich jeh überboten wird.

phpMyAdmin 3 und ein leeres root Passwort

Heute hatte ich mal wieder die Ehre einen Debian Etch Webserver aufzusetzten. Standardmäßig mit apt-get install mysql-server-5.0 Mysql installiert, das neueste stabile phpMyadmin in /var/www entpackt und eingerichtet. Da Mysql5 unter Etch bei der Installation standardmäßig kein root Passwort abfragt wollte ich das schnell per phpMyAdmin machen musste jedoch feststellen dass dies nicht ging.

In der phpMyAdmin Dokumentation fand sich den auch der Grund, der Login mit leeren Passwörtern ist ab Version 3 per default nicht gestattet:

http://www.phpmyadmin.net/documentation/#config

Die Einstellung um dies zu deaktivieren lautet:

$cfg['Servers'][$i]['nopassword'] = true;

Allow attempt to log in without password when a login with password fails. This can be used together with http authentication, when authentication is done some other way and phpMyAdmin gets user name from auth and uses empty password for connecting to MySQL. Password login is still tried first, but as fallback, no password method is tried.

Ich finde diese Einstellung macht Sinn da es sonst bei einer unbewussten Installation von Mysql einem möglichen Angreifer ein unnötiges Tor öffnet.

Lighttpd: Was ist an Lighttpd so besonders?

Dieser Artikel soll der Anfang einer kleinen Lighttpd Artikelreihe sein und hoffentlich so manche Fragen über diesen Webserver aus der Welt schaffen.

In diesem ersten Artikel geht es um die Eigenschaften die Lighttpd anders macht als der Apache2.


Den ganzen Beitrag lesen...