Posts Tagged ‘ Coding + Co

Sicherheitsproblem bei Shoppero

Kaum ist Nico Lummas shoppero.com gelauncht worden, da gibt es auch schon das erste Sicherheitsproblem. Wie Bjoern von ThinkPHP aufgedeckt hat, findet auf einer Empfehlungsseite eines Nutzers eine Second Order XSS Attacke statt, welche mal eben die eigene Session klaut. Damit auch “Otto-Normal” das ganze versteht, dokumentiert Bjoern das ganze noch mit ein paar erschreckenden Screenshots und für alle Experten gibt es eine “Analyse” des HTML-Sourcecodes.

Ok, so etwas kann passieren – Programmierer sind ja auch nur Menschen – aber vielleicht hätte sich das Shoppero-Team doch etwas mehr als knapp 6 Wochen Zeit nehmen sollen, um das System in die Public-Beta zu hieven. Vielleicht hätte es auch ein simples htmlentities() im Code gereicht, um zumindest den “gröbsten Dreck” draußen zu lassen, doch kenne ich den Code nicht um derartige Rückschlüsse zu ziehen.

Nun ja, Nico wurde bereits per E-Mail benachrichtigt und es bleibt abzuwarten, wie lange der Bug bzw. der Schadecode noch online ist. Im Moment ist er es auf jeden Fall noch. Auf jeden Fall ist es kein wirklich guter Anfang für ein so junges Startup … So long, so was passiert und StudioVZ hat´s auch überlebt, von daher wird das Kind noch nicht in den Brunnen gefallen sein ;)

Update
Auch bei fixmbr ist man dem XSS-Problem schon auf die Schliche gekommen und auch hier gibt´s reichlich Stoff zur Diskussion

PHP 5.2.2 und 4.4.7 released

Auf php.net stehen 2 neue Versionen der Skriptsprache php zum Download bereit. Die Entwickler haben in den neuen Versionen zahlreiche Sicherheitslücken – teilweise aufgedeckt durch den Month of PHP Bugs – behoben, die sich größtenteils allerdings nur lokal ausnutzen ließen. Insgesamt wurden in der Version 5.2.2 15 und in der Version 4.4.7 11 Fehler, die als kritisch eingestuft wurden, behoben.

Ferner wurden noch einige nicht sicherheitsrelevante Fehler behoben sowie mehrere Verbesserungen hinzugefügt.

Ubuntu und Debian bieten bereits die neue PHP-Pakete an, alle anderen Distributoren dürften demnächst folgen und Anwender sollten ebenfalls so schnell wie möglich auf die neuen Versionen wechseln.

[via golem.de]

Krugle durchsucht nun auch Codeplex

Krugle, die, wie ich immer so schön sage, “das Rad nicht 2mal erfinden Quelltext-Suchmaschine”, durchsucht, dank einer offiziellen Partnerschaft zwischen Krugle und Microsoft, nun auch Shared-Source-Projekte auf Codeplex.

Damit ist die Quelltext-Suchmaschine um 6,5 Millionen Zeilen Code reicher geworden, darunter auch einige Codehäppchen für .NET und ist neben Google Code Search wohl eine der nützlichsten Funktionen für Entwickler in den Weiten des WorldWideWebs.

[via Golem.de]

Phalanger – PHP-Compiler für .NET

Eine neue Version des PHP-Compiler Phalanger wurde auf Codeplex veröffentlicht. Die Version 2.0 Beta 2 soll sich nun auch in Visual Studio 2005 integrieren lassen und aus PHP-Skripten Binaries erzeugt, die in der CLR des .NET-Framework 2.0 laufen können. Die zur Integration des Compilers notwendige Software, ist allerdings noch nicht verfügbar.

Sicher interessant zu sehen, ob der Compiler hält, was er verspricht. Laut den Entwicklern wurde alle in PHP vorhandenen Funktionen für .NET nachgebaut, so das sich PHP-Skripte ohne Änderungen mit Phalanger übersetzen lassen. Ob damit dann auch eine reibungslose Migration von LAMP auf einen ASP.NET-Web-Server möglich ist, bleibt abzuwarten. Da im Moment lediglich PHP4 unterstützt wird, sehe ich zumindest für ein paar meiner Projekte schwarz :)

Für die OpenSource .NET- Variante Mono existiert übrigends ebenfalls ein Compiler dieser Art. Der Informatikstudenten Raphael Romeikat von der Universität Augsburg hat mit PHP4Mono schon vor gut einem 3/4 Jahr einen Compiler entwickelt, mit dessen Hilfe sich PHP-Skripte im MONO (.NET) Framework ausführen lassen.

Ip2Nation – the c# way

Eine IP-Adressen einem Land programmatisch zuzuweisen ist eigentlich nicht schwer. Im Netz finden sich einige freie Datenbanken, aus denen man die notwendigen Informationen abgreifen kann. Auf www.ip2nation.com findet man z.B. einen MySQL Dump sowie diverse Beispielscripte, um eine Abfrage dieser Art in PHP zu bauen.

Mehr oder weniger problematisch wird das ganze allerdings, wenn man versucht eines der Beispiele von ip2nation für C#.NET umzubauen. Zwar lassen sich die etsprechenden Tabelle und Inhalte recht einfach auch in einen MS SQL Server importieren (lediglich der Datentyp der Spalte ip in der Tabelle ip2nation muß in den Datentyp bigint geändert werden). T-SQL verfügt allerdings nicht über eine INET_ATON-Funktion, wie man sie z.B. von MySQL kennt.

Kurz zum Verständnis: INET_ATON ist eine MySQL Funktion, die eine Ganzzahl zurück gibt, welche den numerischen Wert einer Netzwerk-Adresse darstellt.

Für C# benötigen wir daher zunächst mal ein entsprechendes Äquvalent für die INET_ATON Funktion:

private double DotNetINET_ATON(string RealIP)
{
        int x;
        string [] arrIPSplit;
        double num = 0;
        if RealIP == "")
        {
                return 0;
        }
        else
        {
                arrIPSplit = RealIP.Split(‘.’);
                for(x = arrIPSplit.Length - 1; x >= 0 ; x )
                {
                        num += ((int.Parse(arrIPSplit[x])%256) * Math.Pow(256 ,(3 - x )));
                }
                return num;
        }
}

Das SQL Statement kann dann auch schon fast so bleiben wie es im Beispiele von ip2nation angezeigt wird, lediglich das “LIMIT 0,1″ sollte man gegen ein TOP 1 austauschen, da MS SQL diesen Befehl nicht kennt. Im Rahmen einer Stored Procedure würde das Ganze dann etwa so aussehen:

ALTER  PROCEDURE GetNation
(
        @ip bigint = NULL
)
AS

SELECT  TOP 1
        c.country
FROM
        ip2nationCountries c,
        ip2nation i
WHERE
        i.ip < @ip
AND
        c.code = i.country
ORDER BY
        i.ip DESC

Und das war´s eigentlich auch schon. Nun sollte ein einfacher Aufruf DotNetINET_ATON(ip) den numerischen Wert einer Netzwerk-Adresse zurückgeben, die man dann auf die Datenbank bzw. Stored Procedure jagen kann.

Ob der Code richtig arbeitet, kann man übrigends leicht durch die IP 127.0.0.1 feststellen. Hier sollte DotNetINET_ATON als Return-Wert 2130706433 zurückgeben.

Regular Expression Library

Wer mal schnell eine Regular Expression braucht oder ein selbsterstelltes Regex-Pattern testen möchte, sollte auf jeden Fall mal bei regexlib.com vorbeischauen.

In einer sehr umfangreichen Datenbank kann man dort nach eventuell schon vorhandenen Patterns suche oder, falls man eigene erstellt hat, diese dort testen.

Update
Wer nur mal schnell seine eigenen Patterns testen möchte, hier gibt es eine “Regular Expressions Tester”-Extension für den FireFox

Performancegewinn durch Single- und Doublequotes

Man lernt doch nie aus …

Zeichenketten, in denen keine PHP-Variablen vorkommen, die ersetzt werden, sollten immer in Singlequotes eingeschlossen werden.

Hm, dabei fand ich das in meiner PHP IDE einfach immer nur übersichtlicher .. nu is das sogar auch noch schneller :)

[via 4null4.de & bueltge.de]

PHP4Mono 0.2 released

Die Version 0.2 von PHP4Mono wurde heute freigegeben und steht für alle Interessenten auf Sourceforge zum Download bereit. Zwar ist auch die neue Release wieder nur eine Entwicklungsversion, doch die Fähigkeit, nun auch .NET-Bibliotheken anderer Sprachen direkt aus einem PHP-Script heraus anzusprechen, macht die Version 0.2 sehr interessant.

In Zukunft soll der unter der GPL stehende PHP-Compiler für Mono neben einer Library mit Standardfunktionen auch mit PHP-Extensions umgehen können.

Definitiv ein sehr interessantes Projekt und und ich bin gespannt was aus dem Projekt so alles wird.

Update
Das Projekt hat sogar nen Blog … das lob ich mir doch schon mal :)