BigBasti's Blog About Me & my Digital Lifestyle

15Sep/090

VB.NET/PHP: Kurze URLs erstellen mit Tinyurl Teil 1

Sie sind sehr beliebt und es werden immer mehr! Sogenannte URL-Shorter wie Tinyurl.com,  bit.ly oder wie sie alle heißen.  Diese kleinen Dienste verkürzen beliebig lange URLs in kleine handliche "URLchen".

Dienste wie Twitter, bei denen es auf die Länge der Beiträge ankommt können ohne diese Dienste nicht mehr leben, weswegen Twitter sogar die Nutzung von bit.ly vorschreibt!

icqsmileyBild 1: Ein ICQ 6 Chatfenster mit einer E-BAy-URL die nun einen Smiley enthält

Aber auch eigene Projekte, egal ob online oder offline können so etwas gut gebrauchen. Denn wenn man zb eine E-Bay URL weiter geben möchte ist diese nicht selten mehrere Zeilen lang und wird, je nach Programm falsch dargestellt. Plötzlich enthalten die URLs Smileys die durch Kombinationen wie "=p" oder "8)" in der URL entstehen!

Das ist sehr unangenehm, da der Link dann auch nicht mehr angeklickt werden kann und man den Fehler erst wieder ausbügeln muss. Da erspart so ein Dienst natürlich viel Zeit!

Gut für uns, dass viele der Anbieter auch eine API für ihren Dienst anbieten. So können auch wir Gebrauch davon machen und Vorgänge automatisieren.

Wenn man bei Google nach "tinyurl API" sucht wird man sehr schnell fündig und erfährt, dass man einfach nur die URL "'http://tinyurl.com/api-create.php?url=" aufrufen muss und dann seine zulange URL dahinter packen kann.

Als Ergebnis kommt dann eine gekürzte Version raus!

Wie setzen wir das nun im Code um? Wir müssen ersteinmal auf die Internetseite zugreifen, und das Ergebnis herunterladen!

Das wars auch schon! Hier ist unsere Funktion:


    Public Function shortURL(ByVal langeURL As String)
        Dim retVal As String = ""

        'Den API-Aufruf starten:
        Dim myRequest As WebRequest = WebRequest.Create _
            ("http://tinyurl.com/api-create.php?url=" & langeURL)

        Dim myResponse As WebResponse = myRequest.GetResponse

        'Den erzeugen Strom auslesen
        Dim myReader As StreamReader = _
                New StreamReader(myResponse.GetResponseStream)

        'Stream auslesen
        retVal = myReader.ReadToEnd

        myReader.Close()

        Return retVal
    End Function

Wie man sieht wird nichts anderes gemacht, als oben beschrieben!

Naja, man muss dazu sagen, dass tinyurl.com der wohl "einfachste" Anbieter ist, da dieser einfach nur die "nackte" URL zurück gibt. Deswegen habe ich das hier auch als Beispiel gewählt!

Noch einfacher lässt sich das Ganze in PHP ausdrücken:


//PHP Code:
function TinyURL($u){
    return file_get_contents('http://tinyurl.com/api-create.php?url='.$u);
}

So kann man sehr angenehm seine langen URLs kürzen und seine Besucher erfreuen

Ich habe hierzu ein kleines Beispiel in VB.NET angefertigt, das ihr bei Interesse herunterladen könnt!

urldemoBild 2: Das Demoprogramm in Aktion

Download Hier: Download

Wenn bei euch Interesse besteht stelle ich euch auch die anderen Anbieter wie zB. bit.ly vor und fertige ein Beispiel zu deren API an. Gebt einfach per Mail oder Kommentar bescheid!

22Apr/090

Sicherheitsrisiko PHP Session ID

In letzter Zeit treffe ich wieder vermehrt auf Internetseiten, die die Session ID in der URL übergeben. Eigentlich dachte ich dieses Konzept ist langsam ausgestorben, aber anscheinend noch nicht. In diesem Beitrag möchte ich nochmal zeigen, was passierren kann wenn man die Session ID in der URL übergibt.

Neben den Cookies ist die PHP Session ID eins der wenigen Werkzeuge, die es dem Programmierer ermöglichen festzustellen, ob ein Benutzer eingeloggt ist oder nicht. Da Cookies oftmals in den Browsern deaktiviert sind bleibt nurnoch der Griff zur Session ID. Aber warum ist das gefährlich die ID in der URL anzugeben?

Eigentlich nichts! Zumindest solange man die Internetseite nicht verlässt. Wenn man zB. in einem Forum unterwegs ist, welches die ID in der URL übergibt und dieses Forum über einen Link der in irgendeinem post verlässt sendet man an automatisch die Referrer-Seite mit. Somit weis die Seite die ihr betretet automatisch wo ihr herkommt und da die Session ID auch in der URL steckt weis die Seite auch eure Session ID. Diese wird normalerweise auch in den Seitenstatistiken gespeichert!

Das gefährliche ist daran, dass wenn jemand an diesen Referrerlink von euch kommt und diesen aufruft ist er automatisch mit eurem Benutzer in diesem Forum eingeloggt! Und die Internetseite kann auch nicht unterscheiden, wer mit der Session ID unterwegs ist, denn es können auch ubegrenzt Benutzer mit einer Session ID auf der Internetseite unterwegs sein ohne dass der "original" Benutzer was davon mitkrigt.

Wenn ihr wisesn wollt welche Informationen von euch übertragen werden könnt ihr auf diesen link klicken und mal nachschauen.

LEider wenden immernoch sehr viele Seiten dieses Modell an. Ihr könnt es selbst ausprobieren in dem ihr bei Google einfach mal nach "inurl:phpsessionid" oder "inurl:phpsid" sucht. Hier ein paar traurige Beispiele:

bild-12

bild-22Wie kann man sich schützen? Ganz einfach, als Programmierer sollte man die Session ID entweder per Mod Rewrite verstecken oder ein anderes Verfahren zur Benutzeranmeldung wählen. (Zu diesem Thema werde ich demnächst auch noch schreiben)

Als Benutzer sollte man sich immer vor dem Verlassen der Seite ausloggen, denn die Session ID bleibt solange gültig bis man sie Überschreibt oder löscht. Dies kann nur durch ein Logout oder durch einen erneuten Login erfolgen. Wenn man sich ausloggt, ist es auch egal, ob man vorher auf einen Link geklickt hat, denn die ID ist dann ungültig und wenn jemand dann sogar an eure ID kommt kann er damit nichts anfangen!

Wenn ihr also ne neue Internetseite erstellt auchtet darauf was ihr der öffentlichekit präsentiert, am besten so wenig wie möglich.

   
Get Adobe Flash playerPlugin by wpburn.com wordpress themes