Bananas Development Blog: share your thoughts

So nicht. SQL injection.

So etwas gibt es in jeder Programmiersprache, nur das PHP sehr weit verbreitet ist und somit einen große Angriffsfläche bietet.

Wei weit verbreitet und leider immer noch nicht bei jedem Entwickler angekommen, veranschaulicht diese Suche auf Github.

mysql_query and the $_GET variable

Viel spass damit, vielleicht wird der eine oder andere darauf nun aufmerksam oder die Community wird zusammenarbeiten und pull requests zum fixen des Problemes erstellen.


If PHP Were British

Darüber sollte man sich mal Gedanken machen. Programmiersprachen sollten Manieren haben.

If PHP Were British

Denn so etwas liest sich doch viel besser, oder ?
what_about (£variable) {
    perhaps £possibility:
        //Code here
        splendid;
    perhaps £other_possibility:
        //Code here
        splendid;
    on_the_off_chance:
        //Code here
        splendid;
}


via: reddit/r/php


Nun wird es durch den Dreck gezogen

Nach den letzten Fällen von Bugs die nicht hätten sein sollen, wird nun PHP immer mehr durch den Dreck gezogen. Nicht, dass die Sprache mehr Bugs hätte als andere aber nun wird dies öffentlich ausgeschlachtet.

Mal sehen wie die Macher von PHP darauf regieren. Hoffentlich nehmen sie das mal ernst und nicht so leichtfertig wie beim letzten Patch, der falsch war...

Ungepatche Lücke in aktueller PHP-Version
Der Hacker Maksymilian Motyl hat einen Exploit veröffentlicht, der eine kritische Lücke in der aktuellen PHP-Version 5.4.3 demonstrieren soll. Die Schwachstelle befindet sich anscheinend in der Funktion com_print_typeinfo() und ist laut Motyl nur auf einem 32-bittigen Windows-System ausnutzbar.


via

Ach PHP

Die Sprache kann vieles und ist für Ihre Einsatzgebiete einwandfrei. Leider wird mir in der letzten Zeit zu viel geschlampt....

PHP patcht schnell, aber nicht gründlich
Die am gestrigen Donnerstag veröffentlichten Updates auf die PHP-Versionen 5.3.12 und 5.4.2 sind fehlerhaft. Darauf weisen die Entdecker der Schwachstelle hin, welche eigentlich durch die Updates behoben werden sollte.


So kann das nicht weiter gehen....


Wettern über PHP

Ach ja, PHP ist schon die Qual der Wahl wenn es um Anwendungen geht, die über das HTT-Protokoll arbeiten.

Leider ist PHP nicht das Beste wenn es um Genauigkeit geht. Es finden sich immer wieder Fehler die eigentlich nicht da sein sollten.

Large HTTP request Content-Length header values result in failed malloc() call
wrong equality of string numbers

Und hier noch ein längerer Artikel über das Design in PHP:
PHP: a fractal of bad design
PHP is an embarrassment, a blight upon my craft. It’s so broken, but so lauded by every empowered amateur who’s yet to learn anything else, as to be maddening. It has paltry few redeeming qualities and I would prefer to forget it exists at all.



Javascript in PHP ?!

Ach du Schei*e...

V8js in PHP

Was kommt als nächstes ??
Reicht GOTO nicht schon ?


...

PS: #61095 PHP can't add hex numbers

...

Haskell ich komme !


Was ist nur los mit PHP ?

Security Probleme hat ja jede Programmiersprache / Anwendung. Da kommt es fast nicht darauf an welche man verwendet.

Was mich leider ein wenig stutzig macht, sind die Probleme bei PHP. Fälle die es sogar in das stable Release schaffen. Dinge die bestimmt beim testen aufgefallen wären...

Was ist also nur los mit PHP ? Haben die Entwickler keine Lust mehr, zu viel Erfolg ?


#55439 crypt() returns only the salt for MD5
Kritische PHP-Lücke wird gerade behoben

...

Suhosin und das memory_limit

Argh, das hätte man wissen sollen...

suhosin.memory_limit
Suhosin changes this fact and disallows setting the memory_limit to a value greater than the one the script started with, when this option is left at 0


Erspart so manche verzweifelte Suche nach einem "Fehler" ...

PHP ein wenig sicherer machen

Jede Programmiersprache hat Ihre Tücken und Fehler. Bei PHP ist das nicht viel anders.

Securing PHP
( Mirror )

PHP-Reboot

Rémi Forax will mit PHP-Reboot eine der populärsten Programmiersprachen neu erfinden. Er verspricht weniger $-Zeichen und Semikolons und Sicherheit von Hause aus.

Der Ansatz ist ja gar nicht mal so schlecht...

Rémi Forax, Java-Entwickler und Maître de Conférences an der Universität Marne-la-Vallée, arbeitet mit PHP-Reboot an einer Programmiersprache, die die Philosophie von PHP weiterführen, aber mit modernen Ansätzen verbinden soll. Umgesetzt wird PHP-Reboot auf Basis der Java Virtual Machine.

WTF ?
Wäre es nicht besser Java zu verbessern, und sicherer zu machen ?

Rémi Forax will PHP neu erfinden

Also ich sehe darin keine Vorteile...

Ein weiterer Grund warum phpinfo() nichts auf dem live System zu suchen hat

Die Funktion phpinfo() liefert viele nützliche Informationen die man so als Entwickler so brauchen kann.
Leider auch viele Infos die es einem Angreifer leichter machen irgendwo anzusetzen. Daher ist es immer ratsam diese Funktion zu blockieren. Dazu sollte man auch Suhosin verwenden.

Nun gibt es noch einen Grund warum man die phpinfo() Funktion blockieren sollte.

LFI WITH PHPINFO() ASSISTANCE

Da wird in Kombination mit temporären Dateien und der phpinfo() Funktion Daten auf den Server geschleust.

Multiple DB Connections mit PHP

Sollte man mal mehrere Datenbank Verbindungen in einem Script benötigen sollte man an folgendes denken:

Sind die Datenbanken auf ein und dem selben Server ( der gleiche Host ) und der Benutzer UND das Passwort sind für beide Verbindungen gleich, DANN bekommt man Probleme.
Denn DANN werden die Abfragen immer auf die letzte Verbindung angewandt, egal ob der link_identifier richtig angegeben wird oder nicht.

If you are trying to open multiple, separate MySQL connections with the same MySQL user, password, and hostname, you must set $new_link = TRUE to prevent mysql_connect from using an existing connection.

$db1 = mysql_connect($dbhost, $dbuser, $dbpass);
$rv = mysql_select_db($dbname1, $db1);
$db2 = mysql_connect($dbhost, $dbuser, $dbpass);
$rv = mysql_select_db($dbname2, $db2);

wird zu:

$db1 = mysql_connect($dbhost, $dbuser, $dbpass);
$rv = mysql_select_db($dbname1, $db1);
$db2 = mysql_connect($dbhost, $dbuser, $dbpass, TRUE);
$rv = mysql_select_db($dbname2, $db2);


Die Lösung ist also, dass man das Erstellen einer neue Verbindung erzwingt. Was nicht sehr tolle ist wenn man performance braucht. Aber da kann man ja verschiedene Benuzter anlegen.

Und so was erfährt man erster aus den Kommentaren.....


E-Mail validation ist eigentlich unnötig

Sobal man von dem Benutzer eine E-Mail Adresse braucht, steht man vor dem "Problem" ob die Eingabe nun wirklich eine richtige E-Mail Adresse ist.

Als erstes wird man ja versuchen anhand einer Analyse der Eingabe festzustellen ob es eine korrekt formatierte E-Mail Adresse ist. Danach noch herausfinden via ping etc. ob die Domain vorhanden ist.

Leider gibt es bei der Überprüfung der Eingabe ein Problem.
Es sind viele Methoden im Umlauf die meinen sie könnten 100% testen ob die Eingabe eine E-Mail Adresse ist.

Tja, aber solche Zeichen sind in einer E-Mail Adresse auch gültig !!!
! $ & * - = ^ ` | ~ # % ' + / ? _ { }

Um Grunde sind es viel mehr Zeichen wenn sie richtig maskiert sind !

Also lassen wir diese Überprüfung am besten Falle weg und senden einfach eine Kontroll E-Mail.

Email address validation: please stop
I Knew How To Validate An Email Address Until I Read The RFC