Archive for the 'Java' Category

Swing-Applikation unter Lion?

Neee, das geht von Haus aus nicht – Apple hat unter Lion in seiner Java-Implementierung eine Bibliothek entfernt, die von Swing-Applikationen für gewöhnlich benutzt wird, wenn sie das Standard-Swing-Look & Feel benutzen: JavaRuntimeSupport.jar. Ich persönlich habe es nicht geschafft, eine JDK-Version etwa für Snow Leopard oder Leopard ans Laufen zu bekommen und bekam dann charmante Fehlermeldungen a’la java.lang.Error: Cannot load com.apple.laf.AquaLookAndFeel.

Die Lösung für das Problem besteht gar nicht darin, irgendwelche Bibliotheken nachzuinstallieren, sondern lediglich die entsprechende Applikation (oder den entsprechenden Server) mit dem generischen Metal-Look & Feel zu starten, was man über die Kommandozeilenoption -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel erreichen kann.

Luppt.

Java 7 (JDK 7 / JSE 7) veröffentlicht

Heimlich, still und leise (jedenfalls so leise, dass es an mir vorbei ging), hat Oracle jetzt Java 7 veröffentlicht. Nur gute viereinhalb Jahre nach Java 6 (alias Java 5.01) und ganze sieben Jahre nach Java 5. Wow.

Hier findet man ein paar mehr Informationen:

Den Download gibt es bei Oracle direkt:

Viel Spaß!

SICHERHEIT: Schutz vor SQL-Injection

Das klassische Argument für den Einsatz parametrisierter Statements ist der Schutz vor SQL-Injection. SQL-Injection bezeichnet dabei den Vorgang des Einschleusens von fremden SQL-Statements in eigene SQL-Statements.

Beispiel: Die klassische Benutzer-Authentifizierung, bei der Benutzername und Kennwort übergeben werden. Der typische (C#-) Code für das generieren des SQL-Statements sieht dann in etwa so aus:

   // Werte einlesen
   String username = tbLoginName.Text;
   String password = tbPassword.Text;

   // Statement bauen
   String sqlStatement = “SELECT COUNT(1) FROM Users ” +
      “WHERE Username = ‘” + username + “‘ ” +
      “AND Password = ‘” + password + “‘”;

   // Command erzeugen
   DbCommand command = conn.CreateCommand();
   command.CommandText = sqlStatement;

   // Statement ausführen
   int result = (int) command.ExecuteScalar();

Lassen Sie uns mal einige Varianten für Benutzernamen und Kennwörter durchspielen.

Variante #1:

  • Benutzername: foo
  • Kennwort bla
  • SQL-Statement: SELECT COUNT(1) FROM Users
    WHERE Username = ‘foo‘ AND Password = ‘bla

Kein Problem hier, alles gut. Wenn Benutzername und Kennwort passen, dann ist es fein.

Variante #2:

  • Benutzername: ‘ OR 1=1 –
  • Kennwort: Weiß nicht
  • SQL-Statement: SELECT COUNT(1) FROM Users
    WHERE Username = ‘‘ OR 1=1 –‘ AND Password = ‘Weiß nicht

Großes Problem hier. Das SQL-Statement sieht irgendwie krank aus und kann ganz sicher nicht funktionieren. Sicher?! Doch, es funktioniert, denn die beiden aufeinanderfolgenden Bindestriche interpretiert ein SQL-Server beispielsweise als Kommentar – alles, was danach kommt, wird also ignoriert. Das tatsächlich ausgeführte SQL-Statement sieht also so aus:

  • SQL-Statement: SELECT COUNT(1) FROM Users WHERE Username = ” OR 1=1

Ganz gewaltiges Problem jetzt: Die Abfrage selektiert alle Datensätze, deren Username-Spalte entweder leer ist, oder für die 1=1 gilt. Und da 1=1 immer gilt, werden also alle Datensätze selektiert. Die Anmeldung wird jetzt also klappen.

Variante #3:

  • Benutzername: ‘; INSERT INTO Users (‘karsten’, ‘sicher’) –
  • Kennwort: Keine Ahnung
  • SQL-Statement: SELECT COUNT(1) FROM Users
    WHERE Username = ‘‘; INSERT INTO Users (‘karsten’, ‘sicher’) –‘ AND Password = ‘Keine Ahnung

Ebenfalls großes Problem: Nun werden zwei SQL-Statements ausgeführt, denn das Semikolon trennt SQL-Statements voneinander. Alles, was nach dem Kommentar-Zeichen kommt, wird komplett ignoriert. Das eigentliche SQL-Statement sieht also so aus:

  • SQL-Statement: SELECT COUNT(1) FROM Users WHERE Username = ”; INSERT INTO Users (‘karsten’, ‘sicher’)

Super, jetzt haben wir einen zweiten Datensatz in der Tabelle!

Die Lösung

Der Lösungsansatz ist ganz einfach: Parametrisierte SQL-Statements verwenden. Dazu muss der obenstehende Code nur ein wenig abgewandelt werden:

   // Werte einlesen
   String username = tbLoginName.Text;
   String password = tbPassword.Text;

   // Statement bauen
   String sqlStatement = “SELECT COUNT(1) FROM Users ” +
      “WHERE Username = @Username ” +
      “AND Password = @Password”;

   // Command erzeugen
   DbCommand command = conn.CreateCommand();
   command.CommandText = sqlStatement;

   // Parameter anfügen
   DbParameter param = command.CreateParameter();
   param.ParameterName = “@Username”;
   param.Value = username;
   command.Parameters.Add(param);

   param = command.CreateParameter();
   param.ParameterName = “@Password”;
   param.Value = password;
  command.Parameters.Add(param);


   // Statement ausführen
   int result = (int) command.ExecuteScalar();

Nun werden die Daten anders an die Datenbank übergeben – nämlich in zwei Schritten: Zuerst wird das Statement übergeben, anschließend erfolgt die Übergabe der Parameter. Auf Ebene der Datenbank wird nun nicht etwa ein SQL-Statement dynamisch zusammengebaut, sondern es wird wie in Form eines Prozeduraufrufs verarbeitet. Für die Beispiele gilt also:

Variante #1:

  • Benutzername: foo
  • Kennwort bla
  • SQL-Statement: SELECT COUNT(1) FROM Users
    WHERE Username = @Username AND Password = @Password

Kein Problem hier, alles gut. Wenn Benutzername und Kennwort passen, dann ist es fein.

Variante #2:

  • Benutzername: ‘ OR 1=1 –
  • Kennwort: Weiß nicht
  • SQL-Statement: SELECT COUNT(1) FROM Users
    WHERE Username = @Username AND Password = @Password

Kein Problem hier. Wenn es nicht zufällig einen Datensatz mit dem Benutzernamen ‘ OR 1=1 – und dem Kennwort Weiß nicht gibt, dann wird nix gefunden. Und wenn es den Datensatz gibt, ist der Benutzer ordnungsgemäß authentifiziert.

Variante #3:

  • Benutzername: ‘; INSERT INTO Users (‘karsten’, ‘sicher’) –
  • Kennwort: Keine Ahnung
  • SQL-Statement: SELECT COUNT(1) FROM Users
    WHERE Username = @Username AND Password = @Password

Kein Problem hier. Wenn es nicht zufällig einen Datensatz mit demBenutzernamen ‘; INSERT INTO Users (‘karsten’, ‘sicher’) – und dem Kennwort Keine Ahnung gibt, dann wird nix gefunden. Und wenn es den Datensatz gibt, ist der Benutzer ordnungsgemäß authentifiziert.

Also, keine Sicherheitsprobleme bei Verwendung von parametrisierten Statements.

Wer mehr über SQL-Injection wissen möchte, sollte dringend einen Blick in die Wikipedia werfen.

DOTNET: Nehmt endlich parametrisierte SQL-Statements!

Meine Güte, ich halts langsam nicht mehr aus: Viel zu viele “Entwickler” verwenden klassische (=dynamisch zusammengestellte) SQL-Statements und wundern sich dann über komischste Seiteneffekte. Dabei kann es doch so einfach sein, wenn man nur mal auf die Ratschläge hören würde, die einem an jeder Ecke entgegen gerufen werden.

Die wichtigsten Gründe für parametrisierte Statements sind:

  • Schutz vor SQL-Injection
  • Keine “komischen” Effekte beim Einfügen von Daten
  • Höhere Performance von SQL-Statements
  • Bessere Wartbarkeit von Applikationen

Für die klassischen SQL-Statements spricht heutzutage nichts mehr. Das gilt sowohl für Java, als auch für .NET-Applikationen. Um so schlimmer, dass es immer noch Bücher und Tutorials gibt, die dennoch diese völlig veraltete, unperformante und unsichere Art der Datenbankansprache postulieren.

AUA: …vs. Karsten

Ist das noch frech oder schon unverschämt von diesem Herrn?

  • Sag mal Stefan, wie ist denn die Erfahrung in Eurer Gruppe, ist es möglich mit Karsten sachlich zu reden, oder soll ich das einfach ignorieren. (hier)

Eigentlich zum Lachen, wenn es nicht so lächerlich wäre.

Wer will, kann es gerne hier diskutieren.

AUA: …vs. Java

In der C# vs. PHP-Diskussion ist erfolgreich die Java-Keule rausgeholt worden:

  • Java hat bei den Möglichkeiten “nachgeholt”, es ist wohl evtl. auch eher ein Problem, dass die Java-Entwickler ihre eigene Umgebung teilweise nicht mehr komplett verstehen/ausnutzen und so zu einem Grossteil imperformante (ich spreche gerade eher übers Web) Web-Applikationen herauskommen. (hier)

Das ist einfach nur Müll und Polemik. Muss wohl daran liegen, das Freitag ist.

JAVA: Microsoft JDBC-Treiber und SQL Server Express Edition

Das betrifft zwar nicht nur die Express Edition, sondern jede SQL Server Edition, die als benannte Instanz läuft, aber als Überschrift ist es so definitiv knalliger… ;-)

Damit man mit dem Microsoft JDBC-Treiber auf die benannte Instanz zugreifen kann, sind zwingend folgende Schritte notwendig:

  • Gemischten Authentifizierungsmodus für die Instanz einschalten (Eigenschaften > Sicherheit)
  • Benutzer anlegen
  • SQL Server Browser starten
  • TCP/IP als Zugriffsprotokoll gestatten

Erst wenn alle diese Schritte ausgeführt worden sind, funktioniert der Zugriff. Sonst geht schlicht nix, keine Chance.

Was musste ich eben auf einer Seminarbeurteilung lesen?

“Einer der besten Trainer, die ich je hatte”.

Hört man doch gerne! Und war mir auch ein Vergnügen.

Aber wieso eigentlich nur “Einer der besten Trainer”, hä? ;-)

Acht

…Projekt- und Schulungsanfragen sind allein heute bei mir aufgeschlagen. Wahnsinn.

Ja, ist denn schon Ostern? RedHat kauft JBoss

Sind wir denn hier bei Bäumchen-wechsele-Dich? Erst IBM, dann Oracle, dann Novell, nun RedHat – das vierte Hochzeitsangebot wurde erhört, JBoss wird ein Teil von RedHat, meldet heise. Na, denn: Frohes Eiersuchen!

J2EE mit C# oder VB.NET entwickeln

Byte-Code und Intermediate Language machen es möglich: Mit Grasshopper (aka Visual MainWin) von MainSoft steht nun ein Tool zum kostenlosen Download bereit, mit dem sich J2EE-Applikationen mit C# oder VB entwickeln lassen:

Das Produkt ist kostenlos, erfordert aber die Angabe eines Lizenzschlüssels, den man nach einer Registrierung erhält.

Java vs. .NET – it’s so technology…

Bezugnehmend auf das gestrige Posting von Damir, meine Entgegnung und die Antworten von Shinja und Thomas, hier nun meine Gedanken zur Thematik:

Technologiehörigkeit

Viele, viel zu viele Entwickler und Entscheider sind technologiehörig. Da wird DIE Technologie in den Himmel gelobt und jede andere Technologie verteufelt. Da schlägt dann auch mal schnell ein beleidigter Ton durch, da wird unsachlich diskutiert und ein gepflegtes Halbwissen aus der Vergangenheit als Basis für Aussagen in der heutigen Zeit genommen. Das ist der Status quo, den wir immer wieder sehen.

Standards vs. Technologien

Die Wahrheit jedoch ist (und das hat Shinja heute sehr schön geschrieben): Technologien sind vergänglich. Technologien sind nur temporär. Die Diskussion um Technologien geht also an den Bedürfnissen vorbei – Unternehmen investieren heute weniger in .NET oder Java, sondern in Plattformen, mit denen sie ihre vorhandenen Lösungen integrieren und weiter sinnvoll nutzen können. Das ist der Moment, wo Standards – etwa XML oder WebServices – ins Spiel kommen. Die sind das, was eigentlich zählt. Die zugrundeliegende Technologie verliert an Bedeutung – sie kann bei Bedarf ausgetauscht werden. Wenn also gegen eine spezifische Technologie polemisiert wird, trifft das den Kern der Sache einfach nicht.

Aussterbende Technologien

Bestimmte Technologien werden an Bedeutung verlieren – etwa klassisches ASP. Hier sind die Gründe klar: Die Technologien sind veraltet und bieten einfach nicht die Funktionalitäten, die heute erwartet werden. Auf Kosten dieser Technologien findet das zukünftige Wachstum statt – die freiwerdenden Marktanteile werden sich integrierte Frameworks wie .NET und Java teilen. Da eine Verschiebung zwischen Java und .NET zu erwarten ist blauäugig – dafür sind die Laufzeiten der Projekte zu lange und dafür sind auch die Investitionen in die Umgebung oftmals zu hoch.

PHP ist Technologie, kein Standard

PHP spielt zwar derzeit eine gewichtige Rolle im Umfeld von dynamischen Applikationen, hat jedoch im Enterprise-Bereich noch kein Bein auf den Boden bekommen. Und das nicht ohne Grund: Es dreht sich hier einfach zu wenig um Standards – und somit ist PHP vergleichsweise uninteressant in Bereichen, in denen es um Integration geht. Übrigens sollte man an der Stelle nicht von der reinen Anzahl an PHP-Webseiten ausgehen und die Sprache als seligmachendes Mittel anpreisen: In der schieren Masse verstecken sich Unmengen an kleinen und kleinsten Präsentationen, Gästebücher und Foren. Die als Enterprise (also Unternehmensanwendung) zu sehen, fällt ernstlich schwer.

Standards zählen, nicht Technologien – Integration zählt, nicht Hype

Wenn das alles zusammengezählt wird, schlägt hier die Stunde von .NET und von Java, denn beides sind integrierte Frameworks, die schon eine Menge an Funktionalität mitbringen, sehr leicht erweitert werden können und sich nahtlos in bestehende Strukturen einfügen lassen. Wer das nicht sehen will oder kann, dem fehlt tatsächlich die Kenntnis, der lebt nur in seiner eigenen Welt und der diskutiert am Thema vorbei. Und nur, weil ein Framework plötzlich nicht mehr der neueste Hype ist, muss es nicht zwingend schlechter sein oder gar an Bedeutung verlieren – auch wenn sich das der eine oder andere Kollege wünscht.

Don’t bash the community!

Ein Fehler wird übrigens gerne gemacht, wenn keine anderen Argumente mehr greifen: Da wird mal eben schnell die Community der Konkurrenz schlecht dargestellt. Leider, leider zeigt das, dass der Betreffene auf sehr wackeligem Grund argumentiert: Eine Community als träge zu bezeichnen (etwa im Falle von AJAX, was im Übrigen nur ein Hype ist), ist erstens sachlich falsch (hier, hier, hier, hier und hier) und wirkt zweitens einfach nicht besonders gut – oder wollen wir etwa von der anderen Seite beschimpft werden?

Java-Bashing: It’s so boring!

Der liebe Kollege Tomicic hat einen Beitrag in seinem Blog verfasst, den ich so nicht stehenlassen kann. Es geht dabei um die Aussage der Businessweek, dass Java und die J2EE tot seien – was aber nur simples Wunschdenken des Autoren, einer Meinungsforschungsfirma und leider auch des Kollegen ist.

Nur weil eine Zeitung und ein Marktforschungsinstitut es behaupten, sind weder Java noch die J2EE tot. Im Gegenteil: Sie rocken mehr als je zuvor und sind innovativer als je zuvor: Ein Beispiel: Generics – kam bei Java 5 mehr als ein Jahr vor .NET 2.0, und ist nebenbei auch noch konsequenter implementiert.

Hinsichtlich Beans: Ich hoffe, dem Autor ist klar, dass eine einfache Klasse bereits eine Bean ist? Und ja, die musste man einfach haben – nämlich weil es einfach besser war und ist, objektorientiert (neben dem ganzen Hype) zu arbeiten. Falls Enterprise Java Beans gemeint sind: Die bewegen sich Bereichen, in die man derzeit mit .NET-Technologie noch kaum hinkommt. Insbesondere deshalb, weil es eben noch kein Pendant zu integrierten Applicationservern wie WebLogic oder WebSphere mit deren weitreichenden Funktionalitäten gibt. Ohnehin ist .NET bisher kaum im Enterprise-Bereich angekommen, weil eben wichtige Technologien und Techniken nicht verfügbar waren und nach wie vor auch sind – erwähnt seien nur mal Sachen wie Hibernate (ja, da gibt es einen mittelprächtigen Port), serverbasierende Persistenz, Spring oder ähnliche Sachen. Es ist also recht vermessen, hier einen Abgesang auf Java und J2EE zu singen – auch wenn da der Wunsch der Vater des Gedanken ist.

Hinsichtlich der “Basistechnologie für Service-Provider” lässt sich nur soviel sagen: Sowohl .NET als auch Java rollen den Markt an der Stelle auf – und zwar zu Lasten von älteren Technologien (COM, CORBA, etc.). Beide bieten sehr schön nutzbar WebServices-Implementierungen an und sind beide performant und schnell.

Und, lieber Autor: Wenn Du denkst, dass Java langsam und träge sei, dann wird es Zeit, dass Du es mal ausprobierst… Ich kann dieses Vorurteil von den ach so langsamen Java-Applikationen nicht mehr hören. Auch hinsichtlich “schwerfällig” und “teuer am Ende”: Das sind Vorurteile! Was bitte ist denn an einer gut programmierten J2EE-Lösung schwerfällig? Und was ist an einer J2EE-Lösung auf Basis von JBoss und anderen OpenSource-Tools teuer? Nicht mal die Folgekosten sind höher als bei einer .NET-Lösung – wie auch, das Wissen liegt praktisch auf der Strasse, das System ist weitestgehend egal und Lizenzkosten fallen auch nicht an.

Noch ein Aspekt: Die wesentlich ältere und oftmals auch regere Community im Java-Umfeld: Sorry, was allein die Anzahl der Leute angeht kann .NET derzeit noch nicht mithalten. Zwar steigt hier die Anzahl, aber Java / J2EE hat da sicher auf lange Zeit noch die Nase vorn.

Versteh mich nicht falsch, lieber Autor: Ich liebe .NET und ich setze es nicht ohne Grund sehr weitreichend ein. Aber ich kenne und nutze auch Java und die J2EE – und kann die Aussagen nur unter dem Aspekt einer ziemlich plumpen Werbung nachvollziehen. Wer sich ein Urteil über eine andere Technologie erlauben möchte, sollte sie doch bitte zuvor kennen lernen und nicht einfach nur mit Halbwissen und Hörensagen um sich schlagen.

Klare Aussage am Ende: Weder Java noch J2EE sind tot. Im Gegenteil: Sie leben! Das wird sich spätestens mit der J2EE 1.5 und Java 6 zeigen, die beide im nächsten Jahr zu erwarten sind. Und das haben wir alle davon: Mehr Innovation und mehr neue Features sowohl in .NET als auch in Java, denn Konkurrenz belebt das Geschäft.

Ach so, zuletzt: Ich nutze beide Technologien, gebe Trainings mit ihnen und schreibe Bücher drüber. Ganz ehrlich: Das alles würde ich nicht machen, wenn eine der beiden Technologien träge, langweilig oder unpraktisch wäre. Ich kann nur jedem Entwickler und Entscheider raten: Schaut mal über den Tellerrand und seht euch mal die Konkurrenz an. Es könnte durchaus interessante Überraschungen geben!

“Java Premium Codebook” veröffentlicht

Java Premium CodebookDas “Java Premium Codebook” von Dirk Louis, Peter Müller und Karsten Samaschke (also mir) ist nunmehr ganz offiziell erhältlich. Mehr als 300 Rezepte decken alle wichtigen Bereiche rund um die Java-Entwicklung ab. Zusammen mit dem “J2EE Premium Codebook” von Thomas Stark und Karsten Samaschke haben Java-Entwickler nunmehr eine komplette Rezeptsammlung an der Hand, die wirklich alle Fragen beantworten sollte!

Mehr Informationen zum Java Premium Codebook gibt es hier:

JBoss und Microsoft kooperieren

JBoss und Microsoft wollen miteinander kooperieren. Ziel der Kooperation: JBoss soll besser auf Windows laufen und Windows-Services (Active Directory, etc.) nutzen können. Meine persönliche Meinung in Kurzform: Nutzt beiden! :-)

Golem hat noch etwas mehr an Infos darüber:

Session “Kommunikation: Java und .NET”

Die Slides zur Session “Kommunikation – Java und .NET” vom “.NET Summercamp” in Leipzig, die in (sehr) kurzer Form diverse Szenarien des Datenaustauschs zwischen Java und .NET (und andersrum) skizzieren gibt es hier.

R.I.P. PHP

Ei, das wird dem Christian überhaupt nicht gefallen: 40% aller PHP-Entwickler im kommerziellen Umfeld geben an, zukünftig nicht mehr PHP einsetzen zu wollen, meldet die Computerwoche:

Grund dafür sei die mangelhafte Unterstützung seitens der Entwicklungsumgebungen.

Ich persönlich kann das durchaus verstehen, steigert doch eine gescheite Entwicklungsumgebung meine Produktivität enorm: IntelliSense und AutoCompletion, Debugging und Unit-Tests, Load- und Last-Tests, etc. All das gibt es bei PHP nicht – kein Wunder, ist ja auch primär scriptbasiert.

Ich will damit nicht sagen, dass PHP schlecht sei. Ganz im Gegenteil: Abgesehen von seinen Sicherheitslücken ist PHP sogar besser als (klassisches) ASP. Aber für Sprachen und Frameworks wie Java, J2EE und .NET gibt es mittlerweile einfach deutlich bessere und  vor allem ausgereiftere Unterstützung. Die Zeiten, in denen man per vi oder Notepad coden musste, sind glücklicherweise vorbei (wobei es nicht schadet, es trotzdem immer mal wieder zu versuchen, sonst macht man sich komplett von Tools abhängig).

Also: Bessere Entwicklungswerkzeuge + besserer Entwicklersupport + freundlichere Community = mehr Entwickler. Kein Wunder also, dass Java und .NET marschieren!

Das J2EE Codebook kommt und das Java Codebook liegt in den letzten Zügen…

Viel zu tun derzeit, deshalb kommt hier nicht so regelmässig neuer Content rein, wie es eigentlich sein sollte. Eine gute Nachricht gibt es aber für alle, die schon seit Monaten auf das J2EE Codebook warten: Laut Homepage von Addison-Wesley soll es am 27.07. endlich erscheinen… Und, was soll ich sagen: Das Buch wird ein Hammer – allein der Blick in den Inhalt verrät, dass es jeden seiner 99,– EUR wert sein wird:

Nebenbei sitze ich momentan an der Fertigstellung meines Teils des Java Codebooks für Java 5. Und auch das Buch wird ein echter Bringer, soviel kann man schon mal versprechen… :-)

Ipple: WebObjects ab sofort kostenlos

Ab sofort bietet Ipple (die Firma hieß früher mal Apple) die Entwicklungs-Umgebung für Internet-Anwendungen WebObjects 5.3 kostenlos zum Download an.

Bisher war WebObjects nicht kostenlos verfügbar. Jetzt ist es allerdings über den Ipple Developer Connection-Service nach einer kostenlosen Registrierung erhältlich:

WebObjects kann genutzt werden, um J2EE-Anwendungen ohne Kenntnis von SOAP, XML oder WSDL zu erzeugen und zu deployen.

9. Juli 2005: Auf nach Köln!

Ich habe ja bereits berichtet, dass ich am 09. Juli in Köln bin und zusammen mit Christian Wenz und Uwe Baumann den Workshop “Webanwendungen sicher programmieren” bestreiten werde. Hier nun die offizielle Ankündigung mit allen Details:

: Multimediatreff XVI : Interaktiver Workshop :
»Webanwendungen sicher programmieren« am 9. Juli im MediaPark/Köln

Eine Web-Anwendung mit hohem Sicherheitsstandard zu entwickeln ist eine anspruchsvolle Aufgabe. Normalerweise fällt dem Webmaster dabei die Aufgabe zu, den Web-Server gegen Angriffe bestmöglich abzusichern. So möchten wir uns dem Sicherheitsthema einmal aus Programmierersicht nähern. Denn auch Entwickler müssen bei der Applikationsentwicklung schon einige Grundregeln beachten, um vertrauliche Daten vor unbefugtem Zugriff zu schützen.

: ZIELGRUPPE :
Mit dem interaktiven Workshop richtet sich der MMT an alle Webprogrammierer/innen, egal aus welcher Technologieecke und mit welchem Wissensstand – denn das Thema »Sicherheit« ist ein universelles Problem.

: WORKSHOP :
Die Web-Security-Experten Christian Wenz, Karsten Samaschke und Uwe Baumann (Microsoft Deutschland GmbH) haben einen Webshop programmiert, der an so manchen Stellen Sicherheitslücken aufweist und das Publikum darf fröhlich Passwörter ausspionieren, Adminstratorrechte erschleichen und durchaus andere illegale Methoden versuchen, mit dem Ziel diesen Webshop zu knacken. Im Verlauf dieser kriminellen Aktivität wird hoffentlich klar, wo die Probleme liegen. Drastische Beispiele aus echten Projekten in ASP.NET, PHP und JSP untermauern die Do’s und Dont’s zusätzlich. Weitere Infos gibt es unter:
http://www.multimediatreff.de/naechstestreffen.php

: PREIS / LEISTUNG :
Die Teilnahme am interaktiven Worshop kostet 35,- EUR und beinhaltet die Verpflegung über den ganzen Tag. So gibt es lecker belegte Brötchen, opulente Fruchtschalen und am späten Nachmittag werden Pizza & Salate von dem ausgefallensten Pizza Bäcker der Stadt bestellt! Zudem fließen reichlich unalkoholische Getränke und zum Abschluss gibt es noch ein spritziges, kühles Kölsch …

… ebenso locken noch Gewinne in Form von Büchern zu den Themen ASP.NET, PHP 5, JSP und HTML/CSS – den Sponsoren Microsoft, Galileo Press, Addison Wesley und Markt+Technik sei Dank!

: ANMELDUNG :
Wenn Ihr mit dabei sein wollt, könnt Ihr Euch unter folgenden Website anmelden:
http://www.multimediatreff.de/reservieren.php

: ANFAHRT :
Mittlerweile ist die Anreise nach Köln innerhalb Deutschland ein Katzensprung. Die Billig-Angebote des Köln/Bonner Flughafens sind unschlagbar und ein ICE fährt immer zum Dom :-) Zur Zeit winken zudem noch die günstigen Wochenend-Tarife des Jolly Hotel MediaPark – alle Infos unter:
http://www.multimediatreff.de/anfahrt.php

Das Multimediatreff-Team freut sich auf einen spannenden Thementag!

 

Nächste Seite »