Gratis Websecurity Tools

April 14th, 2010

Vor einigen Monaten habe ich über die Sicherheit von Webapplikationen gefunden. Hier ist eine interessante Webseite dazu: 10 Gratis Tools um die Sicherheit einer Website zu testen (gegen SQL-Injection, Cross-Site-Scripting, u.a.).

http://www.webresourcesdepot.com/10-free-web-application-security-testing-tools/

Browser Historie lesen

April 14th, 2010

Mit einem kleinen Trick kann man auslesen, ob der Besucher deiner Website eine bestimmte URL schon besucht hat. Die Browserhersteller kennen das “History Stealing” schon lange, tun aber nichts dagegen.

So gehts:

<pre>
function hasLinkBeenVisited(url) {
var link = document.createElement('a');
link.href = url;
document.body.appendChild(link);
if (link.currentStyle) {
var color = link.currentStyle.color;
if (color == '#ff0000')
return true;
return false;
} else {
link.setAttribute("href",url);
var computed_style = document.defaultView.getComputedStyle( link, null );
if (computed_style) {
if (computed_style.color == 'rgb(255, 0, 0)')
return true;
}
return false;
}
}
</pre>

Dabei muss per CSS die Farbe rot für besuchte Links definiert sein.

Code von http://www.merchantos.com/makebeta/tools/spyjax/

Amazon Cloudfront Private Streaming Example

April 7th, 2010

Amazon Cloudfront streaming servers with private URLs have just been online for a few weeks. Therefore there is not much information available nor are there many code examples.

Here are a few links to explaining websites and a working PHP code example.

I hope this helps some other developers :-)

Amazon Documentation
Amazon Forum
Cloudberry HowTo
Bucket Explorer HowTo

>>> Download Code Example:
>>> cloudfront_private_streaming_example.zip

Etwas erklären übers Web

March 5th, 2010

Das ist oft einfacher gesagt als getan. Eine Beschreibung reicht oft nicht. Videos können genau zeigen wie etwas geht, aber sind oft zu genau, weil zuviele Details gezeigt werden, die nicht relevant sind.

Individuell angepasste Zeichnungen in einem Video sind oft am deutlichsten. Die Firma ixxie habe ich zufällig gefunden und die machen auf einer Webseite deutlich, warum solche Videos wirken.

Ist zwar holländisch, aber es ist klar, worum es geht.

http://www.ixxie.nl/

Wake On Lan with Speedtouch 510

March 4th, 2010

Here are some guidelines to install Wake on Lan for a pc which is connected to the internet with a Speedtouch 510.

Get the newest firmware on http://speedtouch.net.nz/510seriesFirmware.htm

When you update to the newest firmware you will probably loose all your settings!

It’s easiest to download the firmware+UpgradeApp.
- Unpack the files (run the downloaded exe)
- Rename the directory of the files to something short because the speedtouch seems to have a problem with long directorynames.
- start upgradeST.exe
- configure your speedtouch basic settings. In your browser connect to your speedtouch (either http://10.0.0.138 or http://192.168.1.254). Choose Speedtouch-Configuration-Set Up to configure your speedtouch with a wizard.

I am in Austria with Telekom and need the following configuration:
Router or Bridge: Router for NAT
VPI/VCI: 8.48
Connection type: PPPoA

Configure you speedtouch to connect to DynDns. This is straightforward in the web interface.

Save your configuration in an ini-file. In the web interface you find this with Speedtouch-Configuration-Save or Restore Configuration

Add this line in you ini-file to add a statical combination of ip-address to mac-address:
[ ip.ini ]
arpadd intf=LocalNetwork ip=99.99.99.99 hwaddr=99:99:99:99:99:99

Add this line in you ini-file to open port 6350 on the internet. A wakeup message sent to this port will be sent to you local pc (change ip-address) on port 7 :
[ nat.ini ]
mapadd intf=Internet inside_addr=99.99.99.99 protocol=udp outside_port=6350-6350 inside_port=7-7 inbound=enabled

Upload your ini-file to your speedtouch via the web interface.

Here you can send a wakeup signal to your pc: http://www.wakeonlan.me/
Remember to send your message to port 6350 (or any other port you’ve configured)

Here you can find a PHP script to wake up a pc: http://www.vdr-wiki.de/wiki/index.php/WAKE_ON_LAN_-_PHP

With this small program you can send wakeup signals and it can also detect if a wakeup signal is received. So you can test if a wakeup signal from the internet is received even when your pc is running. http://magicpacket.free.fr/

PHP-Datenbankzugriff über PDO

March 3rd, 2010

Wie in einem anderen Posting erklärt ( http://donauweb.at/ebusiness-blog/2009/11/15/sicherheit-security-eines-webshops-verbessern/ ), gibt es bei PHP keine 100% Maßnahmen gegen SQL-Injection mit konventionellem Datenbankzugriff. Nur parametrisierte SQL-Befehle bieten mehr Sicherheit. Es ist daher empfehlenswert, nur noch PDO für Datenbankzugriffe zu verwenden.

Um Datenbankzugriffe mit PDO zu vereinfachen habe ich eine Bibliothek-Klasse geschrieben für den Zugriff auf eine Datenbank mittels PDO. Diese Klasse bietet Funktionalitäten wie bei ADODB. Die wichtigsten sind:

  • pdoGetAll($sql, $data) und pdoGetRow($sql, $data) liefern ein oder mehrere Datensätze als Array zurück.
    Der SQL-Befehl kann Parameter beinhalten, deren Werte in $data mitgeliefert werden.
    zB $sql = “select * from table where id=:id”
  • pdoGetAssoc($sql, $data) holt das gleiche Resultat wie pdoGetAll, jedoch wird die erste Spalte zum Index vom Array. Dadurch ist das Lesen von zB definierten ID-Werten nachher wesentlich einfacher.
  • pdoInsUpd($table, $data, $insert_or_update, $where) erstellt einen INSERT oder UPDATE SQL-Befehl an Hand der übergebenen Parameter und führt diesen Befehl aus.

Die Klasse kann als OpenSource downgeloadet werden.

User am Browser erkennen

February 24th, 2010

Der Browser schickt soviel spezifische Informationen mit, dass man einen einzelnen Benutzer oft nur am Browser erkennen kann.

Zusätzlich zum http-Header braucht man dazu noch ein Javascript, welches sich die installierten Fonts, Browser Plugins und SuperCookie-Infos holt.

Siehe hier: https://panopticlick.eff.org/

Wie mache ich einen Screencast?

January 27th, 2010

Dafür gibt es einige Tools:

http://www.tripwiremagazine.com/2010/01/28-seriously-useful-tools-for-creating-your-own-screencast.html

Streaming günstig

January 14th, 2010

Ab sofort gibt es bei Amazon über S3 und Cloudfront auch Video Streaming. Damit lohnt sich Streaming auch für Firmen, die nur wenig Videos haben.

Vorteile:
- Amazon verteilt den Content weltweit auf mehrere Server und daher ist die Distanz vom Browser zum Server geringer als wenn es nur einen Server weltweit gibt. Amazon schaut bei jedem Request nach, welcher Server am nächsten ist.
- Amazon verrechnet nur einen Preis pro Gigabyte (unter 20 Cent), es gibt sonst keine Kosten.

Tools zum Uploaden und Verwalten von Dateien in Amazon S3 und Cloudfront:
- Cloudberry S3 Explorer
- S3Fox (Addon für Firefox)

Beschreibungen wie man Flash verwaltet:
- Longtailvideo.com
- StreamingMedia
- Amazon

Welche Tools verbinden mich zu Amazon:
http://www.labnol.org/internet/amazon-s3-clients-roundup/8286/

Warum PDF mit PHP erstellen?

January 9th, 2010

Und warum sollte man ein PDF denn mit PHP erstellen? Man hat ja üblicherweise sein PDF aus einer anderen Applikation erstellt und will es nur auf den Webserver hochladen …

Google kann PDF-Dateien lesen und da PDF-Dateien meistens langlebiger sind als Webseiten werden diese PDF-Dateien von Google relativ hoch bewertet. Also gelten für PDF-Dateien die gleichen Regeln wie für HTML-Dateien:

Wichtige Stichwörter öfters verwenden, Links zur Website angeben, gerne auch Deeplinks (denn in Deeplink-URLs kommen die Stichwörter wieder vor).

Weiters will auch der Kunde vielleicht eine allgemeine Info zur Firma, wenn er ein PDF liest. Vielleicht holt er das PDF ja nicht von der Website der betreffenden Firma sondern über einen anderen Link (zB Google).

Aus obenstehenden Gründen macht es Sinn, PDF-Dateien, die man erstellt hat, mit PHP am Server nachzubearbeiten. Dabei werden neue Seiten mit diesen Informationen zugefügt.

PDF erstellen mit PHP

January 9th, 2010

Am besten geht das mit TCPDF. TCPDF kann aus HTML ein PDF erstellen und das erleichtert die Sache sehr. Natürlich kann TCPDF nicht alle HTML-Tags und Attribute, aber da man in PHP das HTML selber erstellen kann, ist das leicht zu berücksichtigen.

Wenn zusätzlich PDF-Dateien eingelesen werden müssen, um neue Seiten einzubinden, oder PDF-Dateien zu mergen, dann kann zusätzlich PDI verwendet werden. PDI kann PDF-Dateien einlesen. Das Zusammenspiel von PDI mit TCPDF ist problemlos. Wenn TCPDF inkludiert wird, bevor man ein PDI-Objekt instanziert, dann ist PDI automatisch von TCPDF vererbt.

http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf
http://www.setasign.de/products/pdf-php-solutions/fpdi/

Sicherheit/Security eines Webshops verbessern

November 15th, 2009

Wenn man einen Webshop laufend beobachtet, dann findet man immer wieder Angriffe auf den Webshop. Hacker versuchen, Schwachstellen des Webshops auszunutzen. Hier folgen einige Methoden, wie Hacker versuchen einzubrechen und was man dagegen unternehmen kann.

Angriffe auf Webshops und Schutz dagegen

Erklärung von Anriffsmöglichkeiten
http://www.suspekt.org/2009/06/16/dutch-php-conference-the-slides/

Viele interessatnte Artikel über Sicherheit
http://entwickler.de/zonen/portale/psecom,id,125,nodeid,.html
http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

Wie funktioniert SQL-Injection genau?
http://www.securiteam.com/securityreviews/5DP0N1P76E.html
http://unixwiz.net/techtips/sql-injection.html

Angriffserkennung in PHP
http://php-ids.org/

XSS-Tricks
http://ha.ckers.org/xss.html

XSS-Schutz in PHP
http://wiki.flux-cms.org/display/BLOG/XSS+Prevention

Die wohl beste Bibliothek zur Prüfung von Form-Eingaben
HtmlPurifier

top-15-free-sql-injection-scanners

Sicherheitsberater, die Angriffstests durchführen (Penetration Test)
(ich habe einige kontaktiert, bei diesen hatte ich ein gutes Gefühl)

http://www.redteam-pentesting.de
https://www.mark-semmler.de
http://www.internet-sicherheit.de
http://www.it-sec.de/

Titanium bringt das Web in den Desktop

October 24th, 2009

Desktop-Applikationen schreiben mit Web-Technologie:

Applikation schreiben in JavaScript, HTML, CSS, Python, Ruby und bald PHP
und laufen lassen auf Windows, Mac OS and Linux

Titanium ist ein Framework mit inkludiertem Browser und Zugriff auf alle Betriebssystem-Funktionen.

Titanium Desktop
Mehr Info auf http://www.codestrong.com/
Slideshow Intro
Diskussionsforum http://support.appcelerator.net/home

JQuery macht Form-Elemente schöner

August 28th, 2009

… und auch praktischer:

http://www.queness.com/post/204/25-jquery-plugins-that-enhance-and-beautify-html-form-elements

absolute Position ermitteln mit JQuery

August 26th, 2009

JQuery kann mit postion() die Position eines Elements ermitteln, allerdings nur relativ zum nächsthöheren absolut positionierten Element. Untenstehend Code der die absolute Position eines Elements zum Fensterrand ermittelt.

xpos=$(this).position();
xtop=xpos.top;
xleft=xpos.left;
currentTag = $(this).offsetParent();
while(currentTag[0].tagName!=’BODY’) {
p=currentTag.position();
xtop+=p.top;
xleft+=p.left;
currentTag = currentTag.offsetParent();
}

Interessantes PM-Tool

August 1st, 2009

online, einfach und doch sinnvoll, gratis

http://www.thebigpic.org/

Jquery Plugins nur laden wenn notwendig

June 20th, 2009

In einer Webapplikation ist es mühsam, zu verwalten, auf welcher Seite welche JQuery-Plugins benötigt werden. Das JQuery-Plugin “Lazy” nimmt einem diese Arbeit ab. Plugins werden nur dann inkludiert, sobald ein bestimmter Funktionsaufruf stattfindet.

http://www.unwrongest.com/projects/lazy/

JQuery Tipps

June 20th, 2009

25 wirklich exzellente Tipps für JQuery:

http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx

Schnellere Webseiten

June 20th, 2009

Die besten Tipps von Yahoo:

http://developer.yahoo.com/performance/rules.html

High performance Ajax Applications

June 20th, 2009

So macht man schnelle Webapplikationen mit JS, CSS, AJAX:

http://yuiblog.com/blog/2007/12/20/video-lecomte/

CSS-Tipps

June 20th, 2009

50 wirklich interessante CSS-Tipps:

http://www.smashingmagazine.com/2008/12/09/50-really-useful-css-tools/

PHP beschleunigen

June 20th, 2009

Hier gibt es einige Tipps zum beschleunigen von PHP-Code:
http://reinholdweber.com/?p=3
http://www.hm2k.com/posts/50-php-optimisation-tips-revisited

Aber … manche Maßnahmen zur Beschleunigung reduzieren die Lesbarkeit der Applikation. Das macht dann die Wartung zeit- und kostenintensiver und aus diesem Grund muss man immer überlegen, was in welchem Fall wichtig ist.

Caching

June 20th, 2009

Caching kann die Response des Browsers sehr beschleunigen. Grundsätzlich gibt es 2 Ansätze:

  1. Caching im Browser
    Der Server muss dem Browser Anweisungen senden, damit der Browser ganze Dateien cacht.
  2. Caching im Server
    Der Server cacht HTML von Teilen von Webseiten. Diese Teile müssen dann nicht mehr für jeden Aufruf neu generiert werden. Die gesamte Seite kann personalisiert sein, denn es kann auch Seitenteile geben, die nicht gecacht werden.

Caching ist sehr gut erklärt in diesem Artikel (ist von Nov. 2007 aber immer noch aktuell):
http://www.sitepoint.com/article/caching-php-performance/

Eine weitere Art des Cachings, die (1) und (2) kombiniert:
Die Teile einer Seite, die aktuell sein müssen, werden mit AJAX inkludiert. Dann kann die gesamte HTML-Seite im Browser gecached werden. Bei einem erneuten Aufruf der Seite im Browser wird die Seite aus dem Cache geladen, der AJAX-Aufruf findet aber erneut statt und dieser Teil der Seite ist somit immer aktuell.

Ein Nachteil dieser Methode ist, dass auch beim 1. Aufruf der Seite 2 http-Requests erforderlich sind um die gesamte Seite anzuzeigen.

Online zusammenarbeiten für Dummies

June 19th, 2009

SVN kennt jeder, der in der SW-Entwicklung tätig ist.

Ein ähnliches Produkt für den privaten und Business-Bereich gibt es jetzt: http://www.teamdrive.net
Die Software synchronisiert ein lokales Verzeichnis mit einem Verzeichnis auf einem WEBDAV-Server. Benutzerrechte können konfiguriert werden. Die SW ist gratis, 100MB Upload monatlich ist auch gratis, danach wird es kostenpflichtig. Ein eigener WEBDAV-Server kann auch genutzt werden.

Slideshow im Browser

June 18th, 2009

Hier eine Auflistung der besten browserbasierten Slideshow-Lösungen:

http://finnrudolph.de/ImageFlow (nutzt das Scrollrad)
http://www.malsup.com/jquery/cycle/ (mit JQuery)
http://www.buildinternet.com/project/supersized/ (vergrößert alle Bilder auf Fenstergröße)
http://www.hieu.co.uk/blog/index.php/imageswitch/

Scrollrad im Browser verwenden

June 18th, 2009

Hier ist beschrieben, wie man das Scrollrad in Javascript nutzen kann:
http://adomas.org/javascript-mouse-wheel/

Und hier eine Applikation die das Scrollrad verwendet:
http://finnrudolph.de/ImageFlow

Useraktionen eines einzelnen Users direkt verfolgen

June 18th, 2009

Das geht mit http://userfly.com

Sehr interessante Applikation, man kann mitverfolgen, was ein einzelner User gemacht hat. Wo geklickt wurde, was in Felder eingegeben wurde, etc. Es ist noch nicht perfekt (zB AJAX funktioniert nicht), aber schon verwendbar.

Gratis gibt es 10 Aufnahmen im Monat, für mehr wird ein Beitrag verlangt.

Alte Internet Explorer testen

May 2nd, 2009

Eine Website mit einem alten Internet Explorer testen geht mit diesem Tool:
http://finalbuilds.edskes.net/iecollection.htm

Alle IE Versionen von 1.0 bis 8.0 sind inkludiert. Mal sehen, was mit IE 1.0 noch funktioniert …

Lenovo Notebooks

March 31st, 2009

Lenovo hat die Notebook-Sparte von IBM übernommen. So lange wie Lenovo die IBM-Modelle verkauft hat, war alles in Ordnung. Nun sind neue Modelle gekommen, die von Lenovo entwickelt wurden. Die Thinkpad SL300, SL400, SL500 Serien. Thinkpad ist nur der gemeinsame Name mit den IBM-Modellen, die Qualität hat nichts mit den IBM-Thinkpads zu tun.

Viele Notebooks dieser SL-Serie haben einen sehr lauten Lüfter, der sich nie abschaltet. Dies ist extrem störend. Sehr viele Käufer haben diesen Mangel erkannt und im Lenovo-Forum um Abhilfe gebeten. In diesem Forum läuft seit 16.9.2008 eine Diskussion mit inzwischen 292 Postings. Lenovo hat ab und zu ein Posting geschrieben, sonst hat sich nichts verbessert. Also nicht nur die Qualität sondern auch das Kundenservice von Lenovo lässt zu wünschen übrig.

Forum: http://forums.lenovo.com/lnv/board/message?board.id=SL_ThinkPads&thread.id=125

Aus meiner Erfahrung kann ich daher Lenovo Notebooks nicht empfehlen!

PDF erstellen un bearbeiten mit PHP

March 15th, 2009

1) PDF erstellen: FPDF

2) Portable Document Markup Language ist eine Markup-Sprache mit der PDF-Dokumente mittels FPDF erstellt werden.

3) UTF-8 Support für FPDF: UFPDF

4) xhtml2pdf erstellt PDF-Dateien aus XHTML mittels FPDF

5) PDF erstellen mit einem PDF als Hintergrund: FPDI

6) 2 PDF-Dateien in eine mergen bzw. eine PDF-Datei in 2 Dateien splitten: SetaPDF (kommerziell)