bloginfo('name');

bloginfo('description');

Archives Posts

Intelligent Captcha

Juni 25th, 2007 by Blu:RayNe

Ajaxian.com hat wirklich ein sehr „ausgefuchstes“ CAPTCHA – vielleicht schon länger, aber bislang habe ich dort noch nichts zu posten gehabt.

Zu beantworten Fragen gibt es z.B. folgende:

  • What four letter word starting with ‘A’ is the topic of this blog?
  • What does the X in Ajax stand for?
  • What three letter acronym is what we use to style web pages?

Einerseits hält es somit unqualifizierte Beiträge fern, andererseits bringt mich das auf eine ganz neue Idee:

  • What four letter word in the headline of this page does start with A?
  • What id do you read after article in the URL?
  • What color do we use for page background?
Filed under Allgemein, Netzwelt having 1 Comment »

Archives Posts

.htaccess zum Schutz gegen BKA Terror-Bot

Juni 19th, 2007 by Blu:RayNe

Nach des Bespitzelung dieses Blogs habe ich mal ein paar Sicherheitsvorkehrungen getroffen, um mich vor dem Missbrauch von Datenkracken zu schützen:

# Block BKA Terror-Bot
RewriteEngine on
RewriteCond %{HTTP_REFERER} bka [NC,OR]
RewriteCond %{HTTP_USER_AGENT} bka [NC,OR]
RewriteCond %{REMOTE_HOST} bka [NC]
# Hier (in rot) sollte etwas von eurem Host stehen, damit ihr BKA im Seitentitel haben könnte
RewriteCond %{HTTP_REFERER} !<span style="color: #ff0000;">evolution515</span>
RewriteRule ^.*$ http://www.google.de/search?hl=de&amp;q=anti+terror [R=301,L]

Und für alle, die jetzt nicht wissen, was das bedeutet hier nochmal die Apache Dokumentation zu mod_rewrite.

Es wäre schön vielleicht von dem ein oder anderen noch ein paar IPs oder Netmasks für die BKA- und Europol-Server zu bekommen:

Order Allow,Deny
Deny from 208.69.32.130/32
Deny from 62.156.153.38/32
Deny from 217.7.176.24/30 # 217.7.176.24 - 217.7.176.27
Deny from 72.30.0.0/16 # 72.30.0.0 - 72.30.255.255
Deny from 68.142.192.0/18 # 68.142.192.0 - 68.142.255.255
Deny from 68.142.192.0/18 # 68.142.192.0 - 68.142.255.255
Allow from all

Hier die Erweiterung der Rewrite-Rules für die gängigsten E-Mail-Harvester und Spambots:

# Block E-Mail Harvester
RewriteEngine on
ReWriteCond %{HTTP_USER_AGENT} Alexibot                [OR]
ReWriteCond %{HTTP_USER_AGENT} asterias                [OR]
ReWriteCond %{HTTP_USER_AGENT} BackDoorBot             [OR]
ReWriteCond %{HTTP_USER_AGENT} Black.Hole              [OR]
ReWriteCond %{HTTP_USER_AGENT} BlackWidow              [OR]
ReWriteCond %{HTTP_USER_AGENT} BlowFish                [OR]
ReWriteCond %{HTTP_USER_AGENT} BotALot                 [OR]
ReWriteCond %{HTTP_USER_AGENT} BuiltBotTough           [OR]
ReWriteCond %{HTTP_USER_AGENT} Bullseye                [OR]
ReWriteCond %{HTTP_USER_AGENT} BunnySlippers           [OR]
ReWriteCond %{HTTP_USER_AGENT} Cegbfeieh               [OR]
ReWriteCond %{HTTP_USER_AGENT} CheeseBot               [OR]
ReWriteCond %{HTTP_USER_AGENT} CherryPicker            [OR]
ReWriteCond %{HTTP_USER_AGENT} ChinaClaw               [OR]
ReWriteCond %{HTTP_USER_AGENT} CopyRightCheck          [OR]
ReWriteCond %{HTTP_USER_AGENT} cosmos                  [OR]
ReWriteCond %{HTTP_USER_AGENT} Crescent                [OR]
ReWriteCond %{HTTP_USER_AGENT} Custo                   [OR]
ReWriteCond %{HTTP_USER_AGENT} DISCo                   [OR]
ReWriteCond %{HTTP_USER_AGENT} DittoSpyder             [OR]
ReWriteCond %{HTTP_USER_AGENT} Download\ Demon         [OR]
ReWriteCond %{HTTP_USER_AGENT} eCatch                  [OR]
ReWriteCond %{HTTP_USER_AGENT} EirGrabber              [OR]
ReWriteCond %{HTTP_USER_AGENT} EmailCollector          [OR]
ReWriteCond %{HTTP_USER_AGENT} EmailSiphon             [OR]
ReWriteCond %{HTTP_USER_AGENT} EmailWolf               [OR]
ReWriteCond %{HTTP_USER_AGENT} EroCrawler              [OR]
ReWriteCond %{HTTP_USER_AGENT} Express\ WebPictures    [OR]
ReWriteCond %{HTTP_USER_AGENT} ExtractorPro            [OR]
ReWriteCond %{HTTP_USER_AGENT} EyeNetIE                [OR]
ReWriteCond %{HTTP_USER_AGENT} FlashGet                [OR]
ReWriteCond %{HTTP_USER_AGENT} Foobot                  [OR]
ReWriteCond %{HTTP_USER_AGENT} FrontPage               [NC,OR]
ReWriteCond %{HTTP_USER_AGENT} GetRight                [OR]
ReWriteCond %{HTTP_USER_AGENT} GetWeb!                 [OR]
ReWriteCond %{HTTP_USER_AGENT} Go-Ahead-Got-It         [OR]
ReWriteCond %{HTTP_USER_AGENT} Googlebot-Image         [OR]
ReWriteCond %{HTTP_USER_AGENT} Go!Zilla                [OR]
ReWriteCond %{HTTP_USER_AGENT} GrabNet                 [OR]
ReWriteCond %{HTTP_USER_AGENT} Grafula                 [OR]
ReWriteCond %{HTTP_USER_AGENT} Harvest                 [OR]
ReWriteCond %{HTTP_USER_AGENT} hloader                 [OR]
ReWriteCond %{HTTP_USER_AGENT} HMView                  [OR]
ReWriteCond %{HTTP_USER_AGENT} httplib                 [OR]
ReWriteCond %{HTTP_USER_AGENT} HTTrack                 [NC,OR]
ReWriteCond %{HTTP_USER_AGENT} humanlinks              [OR]
ReWriteCond %{HTTP_USER_AGENT} ia_archiver             [OR]
ReWriteCond %{HTTP_USER_AGENT} Image\ Stripper         [OR]
ReWriteCond %{HTTP_USER_AGENT} Image\ Sucker           [OR]
ReWriteCond %{HTTP_USER_AGENT} Indy\ Library           [NC,OR]
ReWriteCond %{HTTP_USER_AGENT} InfoNaviRobot           [OR]
ReWriteCond %{HTTP_USER_AGENT} InterGET                [OR]
ReWriteCond %{HTTP_USER_AGENT} Internet\ Ninja         [OR]
ReWriteCond %{HTTP_USER_AGENT} JennyBot                [OR]
ReWriteCond %{HTTP_USER_AGENT} JetCar                  [OR]
ReWriteCond %{HTTP_USER_AGENT} JOC\ Web\ Spider        [OR]
ReWriteCond %{HTTP_USER_AGENT} Kenjin.Spider           [OR]
ReWriteCond %{HTTP_USER_AGENT} Keyword.Density         [OR]
ReWriteCond %{HTTP_USER_AGENT} larbin                  [OR]
ReWriteCond %{HTTP_USER_AGENT} LeechFTP                [OR]
ReWriteCond %{HTTP_USER_AGENT} LexiBot                 [OR]
ReWriteCond %{HTTP_USER_AGENT} libWeb/clsHTTP          [OR]
ReWriteCond %{HTTP_USER_AGENT} LinkextractorPro        [OR]
ReWriteCond %{HTTP_USER_AGENT} LinkScan/8.1a.Unix      [OR]
ReWriteCond %{HTTP_USER_AGENT} LinkWalker              [OR]
ReWriteCond %{HTTP_USER_AGENT} lwp-trivial             [OR]
ReWriteCond %{HTTP_USER_AGENT} Mass\ Downloader        [OR]
ReWriteCond %{HTTP_USER_AGENT} Mata.Hari               [OR]
ReWriteCond %{HTTP_USER_AGENT} Microsoft.URL           [OR]
ReWriteCond %{HTTP_USER_AGENT} MIDown\ tool            [OR]
ReWriteCond %{HTTP_USER_AGENT} MIIxpc                  [OR]
ReWriteCond %{HTTP_USER_AGENT} Mister.PiX              [OR]
ReWriteCond %{HTTP_USER_AGENT} Mister\ PiX             [OR]
ReWriteCond %{HTTP_USER_AGENT} moget                   [OR]
ReWriteCond %{HTTP_USER_AGENT} Mozilla/2               [OR]
ReWriteCond %{HTTP_USER_AGENT} Mozilla/3.Mozilla/2.01  [OR]
ReWriteCond %{HTTP_USER_AGENT} Mozilla.*NEWT           [OR]
ReWriteCond %{HTTP_USER_AGENT} Navroad                 [OR]
ReWriteCond %{HTTP_USER_AGENT} NearSite                [OR]
ReWriteCond %{HTTP_USER_AGENT} NetAnts                 [OR]
ReWriteCond %{HTTP_USER_AGENT} NetMechanic             [OR]
ReWriteCond %{HTTP_USER_AGENT} NetSpider               [OR]
ReWriteCond %{HTTP_USER_AGENT} Net\ Vampire            [OR]
ReWriteCond %{HTTP_USER_AGENT} NetZIP                  [OR]
ReWriteCond %{HTTP_USER_AGENT} NICErsPRO               [OR]
ReWriteCond %{HTTP_USER_AGENT} NPBot                   [OR]
ReWriteCond %{HTTP_USER_AGENT} Octopus                 [OR]
ReWriteCond %{HTTP_USER_AGENT} Offline.Explorer        [OR]
ReWriteCond %{HTTP_USER_AGENT} Offline\ Explorer       [OR]
ReWriteCond %{HTTP_USER_AGENT} Offline\ Navigator      [OR]
ReWriteCond %{HTTP_USER_AGENT} Openfind                [OR]
ReWriteCond %{HTTP_USER_AGENT} PageGrabber             [OR]
ReWriteCond %{HTTP_USER_AGENT} Papa\ Foto              [OR]
ReWriteCond %{HTTP_USER_AGENT} pavuk                   [OR]
ReWriteCond %{HTTP_USER_AGENT} pcBrowser               [OR]
ReWriteCond %{HTTP_USER_AGENT} ProPowerBot/2.14        [OR]
ReWriteCond %{HTTP_USER_AGENT} ProWebWalker            [OR]
ReWriteCond %{HTTP_USER_AGENT} ProWebWalker            [OR]
ReWriteCond %{HTTP_USER_AGENT} QueryN.Metasearch       [OR]
ReWriteCond %{HTTP_USER_AGENT} ReGet                   [OR]
ReWriteCond %{HTTP_USER_AGENT} RepoMonkey              [OR]
ReWriteCond %{HTTP_USER_AGENT} RMA                     [OR]
ReWriteCond %{HTTP_USER_AGENT} SiteSnagger             [OR]
ReWriteCond %{HTTP_USER_AGENT} SlySearch               [OR]
ReWriteCond %{HTTP_USER_AGENT} SmartDownload           [OR]
ReWriteCond %{HTTP_USER_AGENT} SpankBot                [OR]
ReWriteCond %{HTTP_USER_AGENT} spanner                 [OR]
ReWriteCond %{HTTP_USER_AGENT} SuperBot                [OR]
ReWriteCond %{HTTP_USER_AGENT} SuperHTTP               [OR]
ReWriteCond %{HTTP_USER_AGENT} Surfbot                 [OR]
ReWriteCond %{HTTP_USER_AGENT} suzuran                 [OR]
ReWriteCond %{HTTP_USER_AGENT} Szukacz/1.4             [OR]
ReWriteCond %{HTTP_USER_AGENT} tAkeOut                 [OR]
ReWriteCond %{HTTP_USER_AGENT} Teleport                [OR]
ReWriteCond %{HTTP_USER_AGENT} Teleport\ Pro           [OR]
ReWriteCond %{HTTP_USER_AGENT} Telesoft                [OR]
ReWriteCond %{HTTP_USER_AGENT} The.Intraformant        [OR]
ReWriteCond %{HTTP_USER_AGENT} TheNomad                [OR]
ReWriteCond %{HTTP_USER_AGENT} TightTwatBot            [OR]
ReWriteCond %{HTTP_USER_AGENT} Titan                   [OR]
ReWriteCond %{HTTP_USER_AGENT} toCrawl/UrlDispatcher   [OR]
ReWriteCond %{HTTP_USER_AGENT} toCrawl/UrlDispatcher   [OR]
ReWriteCond %{HTTP_USER_AGENT} True_Robot              [OR]
ReWriteCond %{HTTP_USER_AGENT} turingos                [OR]
ReWriteCond %{HTTP_USER_AGENT} TurnitinBot/1.5         [OR]
ReWriteCond %{HTTP_USER_AGENT} URLy.Warning            [OR]
ReWriteCond %{HTTP_USER_AGENT} VCI                     [OR]
ReWriteCond %{HTTP_USER_AGENT} VoidEYE                 [OR]
ReWriteCond %{HTTP_USER_AGENT} WebAuto                 [OR]
ReWriteCond %{HTTP_USER_AGENT} WebBandit               [OR]
ReWriteCond %{HTTP_USER_AGENT} WebCopier               [OR]
ReWriteCond %{HTTP_USER_AGENT} WebEMailExtrac.*        [OR]
ReWriteCond %{HTTP_USER_AGENT} WebEnhancer             [OR]
ReWriteCond %{HTTP_USER_AGENT} WebFetch                [OR]
ReWriteCond %{HTTP_USER_AGENT} WebGo\ IS               [OR]
ReWriteCond %{HTTP_USER_AGENT} Web.Image.Collector     [OR]
ReWriteCond %{HTTP_USER_AGENT} Web\ Image\ Collector   [OR]
ReWriteCond %{HTTP_USER_AGENT} WebLeacher              [OR]
ReWriteCond %{HTTP_USER_AGENT} WebmasterWorldForumBot  [OR]
ReWriteCond %{HTTP_USER_AGENT} WebReaper               [OR]
ReWriteCond %{HTTP_USER_AGENT} WebSauger               [OR]
ReWriteCond %{HTTP_USER_AGENT} Website\ eXtractor      [OR]
ReWriteCond %{HTTP_USER_AGENT} Website.Quester         [OR]
ReWriteCond %{HTTP_USER_AGENT} Website\ Quester        [OR]
ReWriteCond %{HTTP_USER_AGENT} Webster.Pro             [OR]
ReWriteCond %{HTTP_USER_AGENT} WebStripper             [OR]
ReWriteCond %{HTTP_USER_AGENT} Web\ Sucker             [OR]
ReWriteCond %{HTTP_USER_AGENT} WebWhacker              [OR]
ReWriteCond %{HTTP_USER_AGENT} WebZip                  [OR]
ReWriteCond %{HTTP_USER_AGENT} Wget                    [OR]
ReWriteCond %{HTTP_USER_AGENT} Widow                   [OR]
ReWriteCond %{HTTP_USER_AGENT} [Ww]eb[Bb]andit         [OR]
ReWriteCond %{HTTP_USER_AGENT} WWW-Collector-E         [OR]
ReWriteCond %{HTTP_USER_AGENT} WWWOFFLE                [OR]
ReWriteCond %{HTTP_USER_AGENT} Xaldon\ WebSpider       [OR]
ReWriteCond %{HTTP_USER_AGENT} Spam                    [NC,OR]
ReWriteCond %{HTTP_USER_AGENT} Xenu’s [OR]
ReWriteCond %{HTTP_USER_AGENT} Zeus
RewriteRule ^.*$ http://www.google.de/search?hl=de&amp;q=spam[L]
Filed under Allgemein, Security having 3 Comments »

Archives Posts

Safari 3.0

Juni 13th, 2007 by Blu:RayNe

image

Ich wüßte es würde sich irgendwann lohnen auf ein englischsprachiges Windows zu behaaren. Jedenfalls merkte ich nichts davon, dass die Safari 3.0 Beta für Windows, seinen Dienst versagt hätte oder Überschriften ausblieben. Zwar gibt es hin und wieder kleinere Darstellungsfehler, aber was MSIE 7 abliefert ist teilweise noch sehr viel schlimmer.

Im Gegenteil: bis auf das, dass der Browser bei Klick auf Bookmarks abstürzte, bin ich absolut positiv beeindruckt.  Auch die extjs.org-Demos zeigte er wunderbar an.

Safari 3.0 Beta:

  • Super JavaScript Performance
  • Schnelle Seitendarstellung
  • einfache Bedienugung, trotzdem feature-rich
  • aktuelle Technologie und Web-Standards
    (SVG, XHTML/Strict, RSS, …)
  • sehr weiche Animation
    (auf das hat Apple wohl auch optimiert ;)

image
Trotzdem gibt es noch wenige Probleme:

 Beim Font Smoothing darf Apple auch irgendwann mal das Subpixel-Hintung verbessern. Freetype und Microsoft Cleartype kriegen das mittlerweile besser hin. Und weil wir schon dabei sind, bitte auch „text-weight:bold“ nicht zu fett anzeigen!

Trotzdem ist in der Darstellung auch der große Vorteil von Safari: durch ein homogenes Bild verschwinden die Grenzen zwischen Flash und XHTML/Ajax.

Und was Apple total versaute:

Die Beta auch mal auf nicht englischsprachigen System zu testen, und auch wirklich auf Stabilität zu testen. Die Hacker und internationale Presse freut sich darüber, und die DAU-Trolls auch, den sind Kommentare wie „bei den Darstellungsfehlern, kann ich ja gleich wieder den MSIE nehmen!“ nicht selten.

„Der schnellste Browser“ tituliert Apple, und ich muss sagen, die Performance von WebKit in Adobe Air (vormals Apollo), sowie auch von dem Windows-Webkit Browser Swift 0.2 ist definitv besser. Trotzdem fällt auf, dass der Browser einen sehr schnellen Cache besitzt – bei einer hohen Speicherauslastung von über 100MB bei der Google-Startseite :X

Trotzem, es ist ne Beta. Oder sollte ich lieber sagen Alpha, denn so verhält sich der Browser noch. Sollte Apple die Abstürze und die Sicherheitslücken nicht in den Griff bekommen tun sie sich bestimmt schwer auf Windows gegen Firefox oder Opera zu konkurrieren (wir sprechen hier von Technik, nicht von Browseranteilen!). Für Oktober merke ich mir jedenfalls eine Version vor, die sich wie eine Beta verhält und noch viele Sicherheitslücken beinhalten wird…

Mozilla/5.0 (Windows; U; Windows NT 5.1; de) AppleWebKit/522.11.3
(KHTML, like Gecko) Version/3.0 Safari/522.11.3

Archives Posts

STASI 2.0 - Schäuble tyrannisiert den LinuxTag 2007

Mai 10th, 2007 by Blu:RayNe

Nach dieser News auf heise.de musste einfach gehandelt werden:

Betreff [LinuxTag 2007] Mit Schäuble auf dem Programm gehe ich nicht hin!
To orga@linuxtag.org
CC schwobe@linuxtag.org
CC projects@linuxtag.org



Hallo lieber Organisatoren und sonstige Beteiligte,

eigentlich hätte ich mich schon auf die Veranstaltung sehr gefreut, jedoch musste ich erahren dass Bundesinnenminister Schäuble die Schirmherrschaft an sich gerissen hat. Dieser Mensch verkörpert für mich alles was Linux nicht ist, und er ist ein eindeutiger Grund warum ich eben meine Bahntickets storniert habe.

Linux verkörpert für mich Kooperation, gegenseitige Hilfe und Freiheit. Dieser Mensch – nein ich hätte ich noch andere Worte für Ihn – ist das genaue Gegenteil von allem was Linux bedeutet. Unter Ihm sehe ich jemanden, der von Technik weniger Ahnung hat als mein Hund, jemanden der am liebsten seine eigene Privatarmee hätte und versucht mit seiner Politik das Volk zu kriminalisieren und der Mündigkeit zu berauben. Ich finde diese Aussagen kaum übertrieben, eher aber eine mögliche Zukunftsvision, wenn diese Mensch noch länger an der Macht bleibt.

Es ist eine Schande, dass gerade Ihr ihm ein öffentliches Sprachrohr für seine Politik gebt, und es zulässt dass er viele durch seine falschen Ansichten beeinflußt. Normalerweise haben Vertreter der Konzepte von OSS nicht viele Möglichkeiten über die Miss-Stände oder der Dissinformation über die Sicherheits-Politk entgegenzuwirken – und ihr gebt diesen Menschen gerade am LinuxTag ein Sprachrohr?! Bitte!

Andere sehen es genau so wie ich, und ich werde mit mein bestes tun, die News über seine Herrschaft am LinuxTag weiter zu verbreiten.

Deswegen ladet diesen Menschen bitte einfach aus! Wir brauchen Ihn nicht, und sicherlich wär mir ein oder mehrere Euro nicht zu Schade um die Veranstaltung mitzufinanzieren. Ich bin mir sicher es geht auch ohne diesen Unfried Schäuble!

MfG
.mg

Und es geht weiter – hier ein Interview mit dem Bundesdatenschutzbeauftragten, dem anscheinend auch nur noch Sarkasmus in Anbetracht der Ohnmacht gegenüber der freiwilligen Selbstzensur der Gesellschaft übrig bleibt.

Mein Tipp: einfach mal auf volksverdummende Populärmedien wie Rotations-Radiostationen und Privatfernsehen verzichten. Damit kann man sehr schön sehen, wie sich die Gesellschaft verändert.

Im Moment würde ich jedenfalls lieber in einem sauerstoff-leeren Raum ersticken, statt hier weiter auf Erden zu sein. Nein, Vampire und andere Unsterbliche gab es wirklich – sie haben sich nur wegen Frust an der Gesellschaft selbst umgebracht </Sarkasmus>

Filed under Allgemein, Linux, Security having 2 Comments »

Archives Posts

Hat Ihr Browser einen Undo-Button?

April 26th, 2007 by Blu:RayNe

Ärgern Sie sich ständig, dass Sie versehentlich eine Webpage „schließen“? Tja, dann benutzen Sie wohl immer noch den Microsoft Internet Explorer. Zeit zu wechseln (u.a. auch wenn Sicherheit bei Ihnen ein Thema sein sollte)!

Hier gibt’s Alternativen:

Archives Posts

Mit Paypal steigt der Wert des Euro

April 2nd, 2007 by Blu:RayNe

Paypal zählt auf keinen Fall zu den sichersten Plattformen des Netzes. Es ist definitiv möglich bei den meisten Download-Plattformen mit Paypal-Zahlungsmöglichkeit für einen Bruchteil des eigentlichen Kaufpreis und seine Downloads zu kommen. Bisweilen lassen sich sogar komplette Bezahlungsvorgänge simulieren.

Das Unternehmen gibt sich typisch amerikanisch aufgeblasen: Auf der Website sieht man, dass in vielen Sektoren was gemacht wird: für Händler, für Security, für eBay‘ler, für Privatmann, als Entwickler hat bekommt man massenhaft Downloads und Features geboten – noch nie war Bezahlen so einfach, und vor allem so unsicher.

Unsicher deswegen, da sich der Bezahlungs-Vorgang bei den meisten Online-Shops sehr einfach manipulieren lässt – nämlich indem man einfach den zu zahlenden Betrag ändert, oder den kompletten Bezahlvorgang einfach umgeht!

Die Implementierung der Bezahlung der Ware an sich ist nach Paypal-Dokumentation in wohl über 90% der Shops einfach schlampig implementiert. Das bringt in erster Linie Vorteile für den betrügerischen Kunden, und Nachteile für die Händler – allem voran Download Shops. Hier ist es möglich locker 1.000 Artikel in den Warenkorb zu legen, und dafür 0.01 ¢ zu bezahlen, oder die Bezahlung einfach komplett zu faken.

Implementierungen von Paypal

Professionelle Anwender

Für den professionellen Anwender stellt PayPal eine SOAP-API zur Verfügung. Hier kommuniziert der Shop des Händlers direkt mit PayPal, und ein Besuch der PayPal-Webseite wird nur zu Authentifizierung des PayPal Accounts des Nutzers benutzt.

Trotzdem gibt es hier keine einfachen Beispiele zur Implementierung der API: PayPal bietet zwar verschiedene SDKs an – allen voran Java und PHP – trotzdem findet man hier eher eine komplette Testsuite, aus der man dann seine eigene Implementierung herausziehen darf, statt ein einfach zu nutzendes Beispiel.

Und auch hier wird der Bezahlbetrag trotz sicherster Kommunikation über SOAP 1.2 SSL oder PayPal 3-token Authentification, später dem Shop per URL übergeben, und somit dem Nutzer oder Hacker offengelegt. Eine Prüfung des zu zahlenden Betrages findet im PHP-Beispiel des SDK nicht statt. Kein Wunder dass sowas auch übernommen wird.

Das der Wunsch nach einfachen SDKs oder Beispielen da ist können einigen Webseiten mit Developer und PayPalim Namen der Domain entnommen werden. Im PayPalEntwickler-Forum werden fleißig Sources ausgetauscht, die entweder gar nicht funktionieren, nur halb funktionieren oder spätestens beim nächsten Update der PayPal SOAP-Schnittstelle Gefahr laufen nicht mehr zu funktionieren.

Nachdem ich einige Klassen durchprobiert hatte, führte für mich schließlich kein Weg am PayPal-SDK vorbei, dass seinerseits auf PEAR aufbaut.

Semiprofessionale oder Private Anwender

Hier stellt PayPal Händlern einerseits die Möglichkeit vor, die komplett angebotenen Artikel in PayPal wirklich als Produkte zu integrieren und PayPal selbst als Warenkorb zu benutzen, andererseits gibt es die Möglichkeit PayPal per einfacher Einbindung als Formular in eine HTML-Seite PayPal den Empfänger der Zahlung, sowie den zu zahlenden Betrag zu übergeben (typischer Verkauf oder Spende).

Letztere Methode ist angreifbar, da hier Währungsbeträge über den Browser des Nutzers übergeben werden, während beim Warenkorb nur Produktnummer übergeben werden.

Im großen ganzen funktioniert dies nun so, dass der Webshop PayPal über den Browser des Nutzers seine Variablen (Zu zahlender Betrag, Empfänger, Return-URL bei erfoglreicher und abgebrochener Zahlung) im Klartext übergibt. Hier ist der erste Punkt an dem der Nutzer eingreifen kann.

Nehmen wir an ich manipuliere die Zahlung und will nur 0.01 ¢ zahlen. PayPal bekommt also vom „Shop“ mitgeteilt, dass der Kunde 0.01 ¢ zahlen will. Die Zahlung läuft bei PayPal ohne Probleme, und bei Abschluss der Zahlung leitet PayPalauf eine vorher vom Shop mitgeteilte Seite zurück – wieder per eingebundenem Formular. Dies ist meist eine URL mit einem vom Web-Shop generiertem Schlüssel für den Auftrag, so das der Web-Shop kapiert, dass eine Bezahlung für den Auftrag des Kunden erfolgt ist. Auch dies ist manipulierbar, z.B. kann ich so aus 0.01¢ wieder den vollen Betrag machen.

Bisweilen ließe sich durch die vom Web-Shop selbst übergebenen Variablen auch die komplette Bezahlung simulieren. Der Webshop bekäme hier bei schlampiger Implementierung – was im Übrigen Standard zu sein scheint – nichts mit.

Weiteres

Übernimmt man die Beispiele aus der PayPal-Dokumentation „Standard Integration“ findet sich dort kein Hinweis darauf, dass es vielleicht sinnvoll wäre die Zahlen gegenzuprüfen. Erst nachdem ich die Angreifbarkeit einiger Shops durchtestete fand ich nach etwa einer Stunde Dokumentationen wälzen, fünf Punkte, die dem Anwender einige Vorschläge machen:

  1. Check that the payment_status is Completed.
  2. If the payment_status is Completed, check the txn_id against the previous PayPal transaction you have processed to ensure it is not a duplicate.
    (Anm. id um nicht doppelte Transkationen durchzuführen)
  3. After you have checked the payment_status and txn_id, make sure the receiver_email is an email address registered in your PayPal account.
    (Anm. läßt sich weiterhin faken!)
  4. Check that the price, mc_gross, and currency, mc_currency, are correct for the item, item_name or item_number. (Anm. Tja, das sollte man eigentlich bei einer guten Implementierung prüfen; viele tun es wahrscheinlich nicht!)
  5. Check the the shared secret returned to you is correct.
    (Anm. „ist mir zu kompliziert der Krypto-Kram“, wie der deutsche Max sagen würde)

So, und jetzt dürft ihr mal raten, in welchem dieser Dokumente das drinnen stand!

Kreditkarte, PCI Zertifkat und HMAC

Die Sparkasse nimmt es mit Sicherheit sehr ernst: Da dürfen die Web-Services gar nicht verwendet werden, wenn der Shop nicht über ein PCI Zertifkat verfügt, d.h. die sensiblen Kreditkarten-Daten auf dem Übertragungsweg nicht gesichert sind. Weiterhin ist ein SSL-Zertifikat ist da schon einmal die Voraussetzung für die Webseite, sowie ein intensiver Security-Check, dass auch alle Daten sicher sind und unerlaubte nicht gespeichert werden. VISA und MasterCard bzw. die Sparkasse schicken da für das PCI Zertifkat schon einmal einen Datenschutzbeauftragten in entsprechende Unternehmen.

Kann ein SSL-Zertifikat nicht angeboten werden, so gibt es von der Sparkasse einen Formular-Service, der über eine HTTPS Verbindung läuft, und so dem Kunden entsprechende Sicherheit gewährt. Um sicherzustellen, dass auf der Sparkassen-Seite auch genau die Variablen verwendet werden, die vom Shop kommen – also u.a. der zu zahlende Betrag – werden die Variablen über den HMAC gehashed, d.h. es wird sichergestellt, dass auch über eine unsichere Verbindung wie HTTP, die Variablen sicher übertragen werden.

Beides bietet Paypal natürlich nicht an! Soweit ich es sehe, gibt es bei PayPal anscheinend keine Einschränkungen auch Kreditkartenzahlungen über unsichere Verbindungen anzubieten.

„Verbrennt die Hexe!“

Erst einmal ist die Schuld eindeutig auf Seiten der Unwissenheit der Anwender oder besser gesagt Händler zu sehen. Die meisten Menschen sind einfach noch nicht reif für diese neue Welt. Sorry, aber so ist es!

Andererseits ist sehe ich auch Versagen seitens PayPal, die schlampig gearbeitet haben. Bei den lieben Amerikanern zählt nun einmal leider eher Masse statt Klasse, und die Transparenz und somit Sicherheit bleiben da auf der Strecke: Just keep it simple!

Nun, was macht wohl so ein Unternehmen wie PayPal im Falle des Missbraches? Es löscht wohl einfach den PayPal-Account, und somit wäre das Problem erstmal gelöst. Willkommen im Mittelalter!

Trotzdem hat der Händler noch seine Probleme: Dieser wundert warum Nachforschungen über bestimmte IPs nur Länder wie Thailand oder Korea zu Tage fördern, und warum gerade diese Koreaner mit 100 GB Downloads seine Webseite so toll finden. Andererseits kann er es ja mal mit Klagen gegen Betrug versuchen – unsere Richter kennen ja wunderbar gut mit dem Thema Internet aus…

Filed under Allgemein, Security having No Comments »

Archives Posts

Adobe Apollo Alpha1 veröffentlicht

März 25th, 2007 by Blu:RayNe

Heute stellte Adobe die Alpha 1 von seiner Cross-Plattform Runtime Apollo vor, mit der Web-Entwickler Ihre Skillz in XHTML, JavaScript, Flash, AJAX usw. benutzen können um Desktop-Applikationen zu entwickeln.

Web-Applikationen profitieren nun in der lokalen Laufzeit vor allem von Möglichkeiten wie, Lokale Einstellungen, Lokale Ressourcen, Netzwerk- und Nutzer-Konnektivität und Rich Interactive Experiences – soweit nach Adobe.

Das ist jetzt nicht unbedingt alles komplett neu, weil mit Flash allein und etwa Screenweaver vieles auch schon möglich war. Neu hingegen ist, dass man eine Web-Applikation nun direkt in eine Desktop-Applikation exportieren kann. Neu ist der ECMAScript 4 Core für die Ausführung von JavaScript und ActionScript 3 und WebKit (Grüße an Apple Safari!) als Layout Engine oder Browser für alles was die Web-Darstellung betrifft.

Die Beispiele und Videos können jedenfalls noch nicht von einem gesteigerten Mehrwert sprechen, vor allem ist es für mich fragwürdig die YUI-Ext in einer Offline-Application zu packen, und vor allem, da die Apollo Alpha noch nicht wirklich schnell zu sein scheint. Ich denke aber die Nutzer werden das anders sehen, und für das Marketing bietet Apollo nun auch viele neue schwachsinnige Ideen, den Nutzer mit bunten Desktop-Applikationen vollzumüllen.

Nützlich hingegen ist die Apollo-Application Adobe Scout, da sie sozusagen einen WebKit-Browser zur Verfügung stellt, mit dem sich tatsächlich browsen lässt. Für alle Swift und WebKit-Fans nun endlcih auch auf dem PC!

Adobe mag das wohl anders sehen, nutzen werde ich jedenfalls Apollo auch irgendwann, wenn es sinnvoll erscheinen wird – immerhin sparrt es Arbeit, wenn bereits eine Web-Applikation besteht. Nützlich ja, eine große Revolution nein!

Lassen wir uns überraschen, wie sich der Markt hier weiterentwickelt…

Filed under Allgemein, Coding, Netzwelt having No Comments »

Archives Posts

1GB USB Stick für 6.60? frei Haus bei Pearl

März 14th, 2007 by Blu:RayNe

Bei PEARL kann man bis 15.04. USB-Sticks für gerade mal für 2,90€ (inkl 3,90€ Pauschale bei Bankeinzug) bestellen. Leider ist das Angebot bis 15.04. beschränkt, zudem werden 35 Vollversion mitgeliefert, die wohl so aufregend sind, dass lieber gleich der möglichen, aber wahrscheinlichen schlechten Chipqulität des Speichers zum Opfer fallen.

Wohl interessanter ist aber die Abfrage des Aktions-Codes, natürlich „nur“ für alle Käufer der PCgo:

if ((str != ‘975CX85F’) &amp;&amp; (str != ‘975cx85F’) &amp;&amp; (str != ‘975CX85f’) &amp;&amp; (str != ‘975cx85f’)) {
    alert("Bitte geben Sie den korrekten Vorteilscode ein.\n\nSie finden ihn in unserer Anzeige Ihres PCgo-Hefts.");
    return false;
}
return true;

Echt spitze gemacht, vor allem die mördergeile Abfrage! Wir werden mal sehen, wo noch überall auf der Seite geschlampt wurde, oder von Praktikanten oder Azubis ausgeholfen werden musste ;)

Filed under Allgemein, Security having No Comments »

Archives Posts

Oh mein Gott: Web 2.0 und AJAX-Applikationen!

Februar 1st, 2007 by Blu:RayNe

Ich blicke einfach nicht mehr durch!

Ich erinnere mich an den Tage, an denen man in C und einer schönen GUI seine Forms designen konnte, und eine schöne Programmsprache hatte, die alles konnte was man brauchte.

Stattdessen sehe ich jetzt bei der Web-Entwicklung nur noch haufenweise JavaScript, CSS, PHP, SQL, XML, JSON – vor allem aber ein XHTML-Gewurschtle, dass mir das Herz bricht: z.B. Tables als Buttons in der YahooUI um Rendering-Bugs in Browsern zu umehen.

Bei Interface-Widgets in Web-Applikationen kommt man zwangsweise immer wieder auf das CSS/XHTML/JavaScript Grundgerüst des Widgets zurück. Immer wieder stößt man  endlose Bibliotheken, die nur immer wieder ein und das selbe Ziel haben: eine Interface Bilbiothek!

Wo bleiben da die Konzepte hinter dem semantische Web? Trennung von Layout und Inhalt, oder Programmierung und Inhalt? Was für eine spielt der Inhalt der Seite noch, wenn eh alles dynamisch verändert wird? Warum fühle ich mich gerade irgendwie so an den Anfang zurückversetzt?

Web-Applikationen werden immer aufwändiger

AJAX RSS-Reader, AJAX-Sonstwas – der Sinn geht einfach verloren!

Welchen Sinn macht es eine Web-Applikation wie einen Feed Reader zu programmieren, wenn ich damit die Grundprinzipien von XHTML und CSS sowieso wieder verletze? Plötzlich hab ich nur noch ein paar DIVs ohne Inhalt in meine XHTML Grundgrüst. Darüber freut sich Google! Oder ich schlage mich mit CSS rum und setze wieder Tabellen in Frameworks wie qooxdoo oder der Yahoo UI (bzw. YUI Ext) ein, nur damit es Cross-Browser lauffähig ist!

Zudem habe ich derzeit enorme Voraussetzungen an den Nutzer. Einwandfrei funktionieren die benutzen Bibliotheken nur in Mozilla Firefox. Dazu kommen dann noch so Sachen wie CSS und irgendwelche Methoden für DOM-Objekte, die z.B. im Internet-Explorer fehlen. Insgesamt habe ich also einen Haufen Dinge, bei denen ich nicht weiß, wie stark sie beim Nutzer unterstützt werden. Da könnte ich doch gleich einen spezielle Browser-Version voraussetzen – und wir wären wieder in den Jahren der höllischen Dominanz des MSIE!

Auf was setzen AJAX-Applikationen?

  • XHTML dass die Altlasten von HTML mit sich herum trägt und immer noch keine anständige Trennung von Inhalt und Layout hinbekommen hat. Trotzdem kann man erstmal gut damit leben, solange keiner den Document Type vergisst.
  • CSS mit dem wir Webseiten ein einfaches und schnelles Layout geben können. Das Block-Modell der Browser-Darstellung ist dabei eigentlich sehr elegant und erinnert an Absatz, Bild und Fließtext wie in einem Publishing-Tool. Trotzdem fehlen hier noch Dinge wie flexible Layout-Grids und verlässliche Unterstützung der Browser.
  • DOM/JavaScript was wohl einzig alleine im Firefox gut implementiert ist, und sich kaum woanders schöner debuggen lässt. Trotz vieler Web 2.0-Frameworks ist in JavaScript zu programmieren schöner geworden, nicht aber mit einer echten statischen Programmiersprache zu vergleichen.
  • XSL/T und XPath  mit dem sich XML zu XHTML, SDL-FO oder sonst etwas transformieren lässt. Insgesamt eine sehr umständliche Sprache. Ehrlich gesagt finde ich es aber schneller mit einer Template-Engine, z.B. meine XSL-FO zu generieren. Hier tritt die Template-Engine klar anstelle der XSL-Transformation. Im Bereich JavaScript blieben die Sprachen jedoch erstmal weiter außen vor.

Warum plage ich mich also um Unterstützung der ganzen Anforderungen einer dynamischen Plattform ab, um „scheinheilig“ mit Konzepten von Standards zu arbeiten, gegen die ich wegen der Konzeption des Projektes sowieso schnell verstoßen werde?!

Es handelt sich schließlich um eine Applikation, die sicherlich nicht von einer Suchmaschine abgegrasst werden soll, und ein Ding was „nicht im Netz steht“ sondern auf meinem lokalen Rechner ausgeführt werden soll!

Unterscheidung der Typen von Web-Seiten

  • Web-Seiten: Hier geht es klar um den Inhalt. Eine Web-Seite ist die digitale Form einer Zeitung oder eines Magazines. Natürlich kann dies durch optionale Inhalte aufgelockert werden. Die optionalen Inhalte (Flash, Videos), dürfen aber nicht Basis der Webseite sein, und dürfen auch ruhig kleinere AJAX-Widgets umfassen.
    Trotzdem wichtig: maschinell lesbar, semantisch korrekt, Inhalt und Layout getrennt, abwärts kompatibel zu Handies usw.)
  • Web-Präsentationen: hiermit bezeichne ich meist Flash-Seiten, die erstellt wurden, um das Image einer Firma zu vermarkten. Web-Seiten, die komplett in Flash gemacht wurden, bezeichne ich auch als Präsentation – immerhin gibt es Standards um den Inhalt der Seite accessible zu machen. (aber hauptsache die Seiten machen was her!)
  • Web-Applikationen: Feature Rich Applications, bei denen es hauptsächlich um Funktion und Nützlichkeit geht, die aber trotzdem einfach über eine Web-Oberfläche geladen und gestartet werden sollen, und mit Servern kommunizieren sollen. Zudem verfügen über Features, wie man sie von Webseiten kennt.

Hier gehen also Web-Applikation – und damit meine ich so etwas wie Feed-Reader, Online-Tabellenkalkulation – klar weg vom klassischen Erlebnis einer Webseite. Es sind keine Webseiten mehr, sondern Applikationen, die auf Webseiten laufen.

Und leider bestehen diese Applikationen im AJAX-Zeitalter oft aus mehreren 100KB großen JavaScripts und vielen CSS-Dateien, die die Browser in die Knie zwingen!

Alternativen wären klar Java, (z.B. bei ThinkFree-Office eingesetzt), was aber schwer und bestimmt nicht schnell zu programmieren ist, und wohl aus Gründen der Geschwindigkeiten leider immer noch – oft aber ungerechterweise – ausscheidet. Zudem ist die Verbreitung bei Java leider doch sehr gering.

Und dann hätten wir auch noch Flash, bei dem ich vieles voraussetzen kann. Trotzdem hat Flash immer noch Probleme, wenn es um SVG, XSLT, JavaScript und HTML geht weil es wie Java auch einfach ein Browser-Plugin ist. Sozusagen also eine virtuelle Maschine, in der allesausgeführt wird. Und eigentlich sollte es ja im Browser laufen, und nicht in einer VM die im dem Browser läuft.

Der Sinn der XML-Technologie war es immer, die Standards miteinander zu vernetzen, und flexibel nebeneinander oder miteinander benutzen zu können. Eigentlich wäre die Anforderung so, dass es sich um Applikation handelt, die von den Standards des Webs profitieren sollte!

Ein Standard für Web Applikationen muss her!

Ich brauche also eine Sprache, die mir ermöglicht innerhalb eines Browser den Funktionsumfang einer Desktop-Anwendung zu haben – nur ins Netz verlagertund aus dem Browser heraus ausführbar. Und am besten auf XML-Basis!

Sicherlich fällt einem da erst einmal .NET ins Auge, dass aber hautpsächlich erst einmal nur als properitärer Windows-Standard eben nur unter Windows arbeitet (abgesehen von Mono), und dann eben nicht im Browser ausgeführt wird, und somit aus sicherheitstechnisch schon wieder höchst suspekt ist. Zudem laufen die dazugehörigen XML-Standards der Windows Windows Presentation Foundation (WPF) wohl jetzt nur noch unter Windows Vista einwandfrei.

Dann haben wir Adobe Apollo was mit seiner Konzeption genau die Lücke füllt, und von mir deswegen mit sehr viel Potential gesehen wird. Trotzdem ist es in erster Line eine Laufzeitumgebung, die erstmal installiert und an die Leute verteilt werden muss. Schließlich will Adobe die konventionellen Hürden des Browsers brechen.

Und wir haben XUL/XBL was Mozilla in allen seinen Projekten einsetzt, und zu mindestens innerhalb von Gecko-Browsern genau unseren Anforderungen entspricht.  Hiermit ist es kein Problem HTML oder SVG Grafiken anzuzeigen oder sonst etwas einzubinden.

Der beste Beweis, dass die Sprachen funktionieren ist aber der Browser Mozilla Firefox selbst, der hauptsächlich auf der Technologie aufbaut. Sogar Microsoft reagierte darauf seiner abgekupferten Variante XAML ;)

Leider aber reagiert das W3C auf die Anforderungen modernen vernetzter Web-Applikationen nicht rechtzeitig oder zu langsam (siehe hier), und Mozilla tut auch nicht gerade viel um XUL zu standardisieren.

Dennoch ist die OS-Gemeine mit Projekten wie WAML oder Backbase vertreten. Beides sind zwar schöne Ansätze, basieren letztendlich wieder bei auf der selben alten Soße.

Und dann gibt es neben dem eigentlichen XUL noch WhatWG, in dem Hoffnung zu sehen ist.

Fazit

Ich liebe das Web 2.0. Für kleine Webseiten ist eine Auflockerung mit AJAX sehr wünschenswert, dennoch ist Standard-Konformität und Barrierefreiheit ein absolutes Muss, wenn man Webseiten gestaltet.

Dennoch sprechen wir von Web-Applications und da würde ich derzeit trotz aller Liebe zum W3C und Standards auf Flash setzen.

Zum einen, da es mir Frust erspart, und zum anderen da ich unter Adobe voraussetzen kann, dass es auch noch in ein Paar Jahren aktuell sein wird, wenn Mozilla Firefox von Safari auf Windows und Opera X stark unter Druck gesetzt wird – auch ja, der MS Internet Explorer müsste dann wohl auch immer noch unterstützt werden.

Ich hoffe jedenfalls das Microsoft nicht sein XAML standardisieren will…

Filed under Technology Watch having 2 Comments »

Archives Posts

Der nächste große Schritt: Adobe Apollo

November 23rd, 2006 by Blu:RayNe

Was ist nun dieses Adobe Apollo

Ein schönes FAQ zum Thema findet sich auf den Seiten von Adobe selbst.

Man kann sich das ganze als eine Art Entwicklungsumgebung vorstellen, das Techniken wie PDF, Flash, ECMA-Script 4 Core, usw vereinigt. Möglicherweise gibt’s ja auch sowas wie eine .NET-Unterstützung.

Immerhin schön, dass jetzt sogar der versierte Anwender in windeseile nicht leistensfähige Applikationen herstellen kann, die eine Menge Speicher verschlingen und wohl kaum mit 10.000 Files oder dergleichen umgehen können.

Das wird bestimmt wie Weinachten, wenn jetzt überall Widgets auf meinem Desktop rumfliegen. Wirklich toll gemacht Adobe!

(Tut mir Leid, ich kann mir den Sarkasmus nicht verkneifen; was ich hier hauptsächlich bemängle ist das Konzept dahinter, und der Hype den es erstmal wieder geben wird, bevor irgendwelche sinnvollen Applikationen oder Präsentationen zustande kommen)

Filed under Coding, Technology Watch having No Comments »

« Previous Entries Next Entries »