<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Andreas Mersch</title>
    <link>http://blog.andreas-mersch.de/</link>
    <description>software development and more...</description>
    <language>en-us</language>
    <copyright>andreas mersch</copyright>
    <lastBuildDate>Sun, 16 Mar 2008 18:48:15 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.8.5223.2</generator>
    <managingEditor>andreas.mersch@gmx.de</managingEditor>
    <webMaster>andreas.mersch@gmx.de</webMaster>
    <item>
      <trackback:ping>http://blog.andreas-mersch.de/Trackback.aspx?guid=79a87e14-e4a2-4ea9-a789-a7ab796945b9</trackback:ping>
      <pingback:server>http://blog.andreas-mersch.de/pingback.aspx</pingback:server>
      <pingback:target>http://blog.andreas-mersch.de/PermaLink,guid,79a87e14-e4a2-4ea9-a789-a7ab796945b9.aspx</pingback:target>
      <dc:creator>andreas.mersch@gmx.de (andreas mersch)</dc:creator>
      <wfw:comment>http://blog.andreas-mersch.de/CommentView,guid,79a87e14-e4a2-4ea9-a789-a7ab796945b9.aspx</wfw:comment>
      <wfw:commentRss>http://blog.andreas-mersch.de/SyndicationService.asmx/GetEntryCommentsRss?guid=79a87e14-e4a2-4ea9-a789-a7ab796945b9</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">Um auf Anmeldeinformationen einer Web Applikation
   aus einer anderen Web Applikation auf der selben Maschine zugreifen zu können und
   so eine Art von Single Sign-On abzubilden, ist entscheidend, dass in der web.config
   beider Applikationen der selbe machineKey konfiguriert wurde.<br /><br /><u><b>LoginWebSite:</b></u><br /><br /><u>web.config: </u><br /><font color="#006400">&lt;system.web&gt;<br />
       &lt;!-- [...] --&gt;<br /><br />
       &lt;authentication mode="Forms"&gt;<br />
           &lt;forms loginUrl="Login.aspx"/&gt;<br />
       &lt;/authentication&gt;<br /><br />
       &lt;authorization&gt;<br />
           &lt;deny users="?"/&gt;<br />
       &lt;/authorization&gt;<br /><br />
           &lt;machineKey validationKey="D61B3C89CB33A2F1422FF158AFF7320E8DB8CB5CDA1742572A487D94018787EF42682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
   decryptionKey="FBF50941F22D6A3B229EA593F24C41203DA6837F1122EF17" /&gt;<br /></font><font color="#006400">    
   <br />
       &lt;!-- [...] --&gt;<br /></font><font color="#006400">&lt;/system.web&gt;</font><br /><br /><u>Login.aspx:</u><br /><font color="#006400">    &lt;!-- [...] --&gt;<br /></font><font color="#006400">    &lt;div&gt;<br />
           &lt;asp:Login ID="Login1" runat="server"&gt;<br />
           &lt;/asp:Login&gt;<br />
       &lt;/div&gt;<br /></font><font color="#006400">    &lt;!-- [...] --&gt;<br /></font><br /><b><u><br />
   ApplWebSite:</u></b><br /><br /><u>web.config:</u><br /><font color="#006400">&lt;system.web&gt;<br /></font><font color="#006400">    &lt;!-- [...] --&gt;<br /></font><br /><font color="#006400">    &lt;authentication mode="Forms"&gt;<br />
           &lt;forms loginUrl="/Login/Login.aspx"/&gt;<br />
       &lt;/authentication&gt;<br /><br />
       &lt;authorization&gt;<br />
           &lt;deny users="?"/&gt;<br />
       &lt;/authorization&gt;<br /><br />
           &lt;machineKey validationKey="D61B3C89CB33A2F1422FF158AFF7320E8DB8CB5CDA1742572A487D94018787EF42682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
   decryptionKey="FBF50941F22D6A3B229EA593F24C41203DA6837F1122EF17" /&gt;<br /><br /></font><font color="#006400">    &lt;!-- [...] --&gt;<br /></font><br /><font color="#006400">&lt;/system.web&gt;</font><p></p><img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=79a87e14-e4a2-4ea9-a789-a7ab796945b9" /></body>
      <title>Single Sign-On mit ASP.NET 2.0 über zwei Applikationen</title>
      <guid>http://blog.andreas-mersch.de/PermaLink,guid,79a87e14-e4a2-4ea9-a789-a7ab796945b9.aspx</guid>
      <link>http://blog.andreas-mersch.de/PermaLink,guid,79a87e14-e4a2-4ea9-a789-a7ab796945b9.aspx</link>
      <pubDate>Sun, 16 Mar 2008 18:48:15 GMT</pubDate>
      <description>Um auf Anmeldeinformationen einer Web Applikation aus einer anderen Web Applikation auf der selben Maschine zugreifen zu können und so eine Art von Single Sign-On abzubilden, ist entscheidend, dass in der web.config beider Applikationen der selbe machineKey konfiguriert wurde.&lt;br&gt;
&lt;br&gt;
&lt;u&gt;&lt;b&gt;LoginWebSite:&lt;/b&gt;&lt;/u&gt;
&lt;br&gt;
&lt;br&gt;
&lt;u&gt;web.config: &lt;/u&gt;
&lt;br&gt;
&lt;font color="#006400"&gt;&amp;lt;system.web&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- [...] --&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;authentication mode="Forms"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;forms loginUrl="Login.aspx"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/authentication&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;authorization&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;deny users="?"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/authorization&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;machineKey validationKey="D61B3C89CB33A2F1422FF158AFF7320E8DB8CB5CDA1742572A487D94018787EF42682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey="FBF50941F22D6A3B229EA593F24C41203DA6837F1122EF17" /&amp;gt;&lt;br&gt;
&lt;/font&gt;&lt;font color="#006400"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- [...] --&amp;gt;&lt;br&gt;
&lt;/font&gt;&lt;font color="#006400"&gt;&amp;lt;/system.web&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;u&gt;Login.aspx:&lt;/u&gt;
&lt;br&gt;
&lt;font color="#006400"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- [...] --&amp;gt;&lt;br&gt;
&lt;/font&gt;&lt;font color="#006400"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Login ID="Login1" runat="server"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:Login&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br&gt;
&lt;/font&gt;&lt;font color="#006400"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- [...] --&amp;gt;&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;b&gt;&lt;u&gt;
&lt;br&gt;
ApplWebSite:&lt;/u&gt;&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&lt;u&gt;web.config:&lt;/u&gt;
&lt;br&gt;
&lt;font color="#006400"&gt;&amp;lt;system.web&amp;gt;&lt;br&gt;
&lt;/font&gt;&lt;font color="#006400"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- [...] --&amp;gt;&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;font color="#006400"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;authentication mode="Forms"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;forms loginUrl="/Login/Login.aspx"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/authentication&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;authorization&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;deny users="?"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/authorization&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;machineKey validationKey="D61B3C89CB33A2F1422FF158AFF7320E8DB8CB5CDA1742572A487D94018787EF42682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey="FBF50941F22D6A3B229EA593F24C41203DA6837F1122EF17" /&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color="#006400"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- [...] --&amp;gt;&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;font color="#006400"&gt;&amp;lt;/system.web&amp;gt;&lt;/font&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=79a87e14-e4a2-4ea9-a789-a7ab796945b9" /&gt;</description>
      <comments>http://blog.andreas-mersch.de/CommentView,guid,79a87e14-e4a2-4ea9-a789-a7ab796945b9.aspx</comments>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://blog.andreas-mersch.de/Trackback.aspx?guid=b748ab90-04b1-45f3-9233-360bebd9ef0a</trackback:ping>
      <pingback:server>http://blog.andreas-mersch.de/pingback.aspx</pingback:server>
      <pingback:target>http://blog.andreas-mersch.de/PermaLink,guid,b748ab90-04b1-45f3-9233-360bebd9ef0a.aspx</pingback:target>
      <dc:creator>andreas.mersch@gmx.de (andreas mersch)</dc:creator>
      <wfw:comment>http://blog.andreas-mersch.de/CommentView,guid,b748ab90-04b1-45f3-9233-360bebd9ef0a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.andreas-mersch.de/SyndicationService.asmx/GetEntryCommentsRss?guid=b748ab90-04b1-45f3-9233-360bebd9ef0a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Ich bin kürzlich auf die hinlänglich diskutierte
   Fehlermeldung "Configuration Error" von ASP.NET 1.1 gestoßen. 
   <br /><br /><h4 id="tocHeadRef"><font color="#008000" face="Courier New" size="2">Configuration
      Error</font></h4><script type="text/javascript">loadTOCNode(3, 'symptoms');</script><font color="#008000" face="Courier New" size="2"><b>Description</b>:
   An error occurred during the processing of a configuration file required to service
   this request. Please review the specific error details below and modify your configuration
   file appropriately.<br /><br /><b>Parser Error Message</b>: Access is denied: 'mydll'.<br /><br /><b>Source Error</b>:<br /><br /></font><pre class="in_text"><font color="#008000" face="Courier New" size="2">Line
   169: &lt;add assembly=&lt;System.Drawing, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&gt;/&gt;<br /><br />
   Line 170: &lt;add assembly=&lt;System.EnterpriseServices, Version=1.0.3300.0, Culture=neutral,
   PublicKeyToken=b03f5f7f11d50a3a&gt;/&gt;<br />
   Line 171: &lt;add assembly=&lt;*&gt;/&gt;<br />
   Line 172: &lt;/assemblies&gt;<br />
   Line 173: 
   <br /></font></pre><font color="#008000" face="Courier New" size="2"><b>Source File</b>: c:\winnt\microsoft.net\framework\v1.0.3705\Config\machine.config <b>Line</b>:
   171<br /><b>Version Information</b>: Microsoft .NET Framework Version:1.0.3705.0; ASP.NET Version:1.0.3705.0 </font><br /><br />
   Ergänzend zum Microsoft Support Eintrag (http://support.microsoft.com/default.aspx?scid=kb;en-us;329065)
   habe ich festgestellt, dass nicht nur der Indexing Service dieses Problem auslösen
   kann.<br /><br />
   Zur Vermeidung des Problems sind die Verzeichnisse<br /><br />
   C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files<br />
   C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files<br /><br />
   ebenfalls aus einer Virenscanner Überwachung auszuschließen. Allgemein: Jedes Tool,
   welches IO Zugriffe auf der Platte überwacht muss diese Verzeichnisse ignorieren. 
   <br /><p><br /></p><p></p><img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=b748ab90-04b1-45f3-9233-360bebd9ef0a" /></body>
      <title>ASP.NET 1.1: Configuration Error - Access is denied</title>
      <guid>http://blog.andreas-mersch.de/PermaLink,guid,b748ab90-04b1-45f3-9233-360bebd9ef0a.aspx</guid>
      <link>http://blog.andreas-mersch.de/PermaLink,guid,b748ab90-04b1-45f3-9233-360bebd9ef0a.aspx</link>
      <pubDate>Tue, 21 Aug 2007 06:49:03 GMT</pubDate>
      <description>Ich bin kürzlich auf die hinlänglich diskutierte Fehlermeldung "Configuration Error" von ASP.NET 1.1 gestoßen. &lt;br&gt;
&lt;br&gt;
&lt;h4 id="tocHeadRef"&gt;&lt;font color="#008000" face="Courier New" size="2"&gt;Configuration
   Error&lt;/font&gt;
&lt;/h4&gt;
&lt;script type="text/javascript"&gt;loadTOCNode(3, 'symptoms');&lt;/script&gt;&lt;font color="#008000" face="Courier New" size="2"&gt;&lt;b&gt;Description&lt;/b&gt;:
An error occurred during the processing of a configuration file required to service
this request. Please review the specific error details below and modify your configuration
file appropriately.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Parser Error Message&lt;/b&gt;: Access is denied: 'mydll'.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Source Error&lt;/b&gt;:&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;pre class="in_text"&gt;&lt;font color="#008000" face="Courier New" size="2"&gt;Line
169: &amp;lt;add assembly=&amp;lt;System.Drawing, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;gt;/&amp;gt;&lt;br&gt;
&lt;br&gt;
Line 170: &amp;lt;add assembly=&amp;lt;System.EnterpriseServices, Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a&amp;gt;/&amp;gt;&lt;br&gt;
Line 171: &amp;lt;add assembly=&amp;lt;*&amp;gt;/&amp;gt;&lt;br&gt;
Line 172: &amp;lt;/assemblies&amp;gt;&lt;br&gt;
Line 173: 
&lt;br&gt;
&lt;/font&gt;&lt;/pre&gt;
&lt;font color="#008000" face="Courier New" size="2"&gt;&lt;b&gt;Source File&lt;/b&gt;: c:\winnt\microsoft.net\framework\v1.0.3705\Config\machine.config &lt;b&gt;Line&lt;/b&gt;:
171&lt;br&gt;
&lt;b&gt;Version Information&lt;/b&gt;: Microsoft .NET Framework Version:1.0.3705.0; ASP.NET Version:1.0.3705.0 &lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
Ergänzend zum Microsoft Support Eintrag (http://support.microsoft.com/default.aspx?scid=kb;en-us;329065)
habe ich festgestellt, dass nicht nur der Indexing Service dieses Problem auslösen
kann.&lt;br&gt;
&lt;br&gt;
Zur Vermeidung des Problems sind die Verzeichnisse&lt;br&gt;
&lt;br&gt;
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files&lt;br&gt;
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files&lt;br&gt;
&lt;br&gt;
ebenfalls aus einer Virenscanner Überwachung auszuschließen. Allgemein: Jedes Tool,
welches IO Zugriffe auf der Platte überwacht muss diese Verzeichnisse ignorieren. 
&lt;br&gt;
&lt;p&gt;
   &lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=b748ab90-04b1-45f3-9233-360bebd9ef0a" /&gt;</description>
      <comments>http://blog.andreas-mersch.de/CommentView,guid,b748ab90-04b1-45f3-9233-360bebd9ef0a.aspx</comments>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://blog.andreas-mersch.de/Trackback.aspx?guid=0d74a70e-faa3-4cd3-a79d-a5ea76b82c0b</trackback:ping>
      <pingback:server>http://blog.andreas-mersch.de/pingback.aspx</pingback:server>
      <pingback:target>http://blog.andreas-mersch.de/PermaLink,guid,0d74a70e-faa3-4cd3-a79d-a5ea76b82c0b.aspx</pingback:target>
      <dc:creator>andreas.mersch@gmx.de (andreas mersch)</dc:creator>
      <wfw:comment>http://blog.andreas-mersch.de/CommentView,guid,0d74a70e-faa3-4cd3-a79d-a5ea76b82c0b.aspx</wfw:comment>
      <wfw:commentRss>http://blog.andreas-mersch.de/SyndicationService.asmx/GetEntryCommentsRss?guid=0d74a70e-faa3-4cd3-a79d-a5ea76b82c0b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Dieser zweite Teil der Webcastserie zum
   Thema Sicherheit mit ASP.NET 2.0 von Dominick Baier befasste sich schwerpunktmäßig
   mit der Thematik der Eingabe Validierung.<br /><br />
   Für mich interessant waren die Punkte HTML Injection, SQL Injection und Cross Side
   Scripting (XSS). Hatte ich schon erwähnt, dass sich die Homepage meines Abiturjahrgangs
   vorzüglich für SQL Injection eignet..? Aber das gehört hier nicht hin!<br /><br />
   Als Gegenmaßnahme, bzw. Vorsichtsmaßnahme gegen SQL Injection gehört grundsätzlich
   Stringverkettungen von SQL Statements und Eingabewerten zu vermeiden. Hierbei lassen
   sich mit simplen Mitteln eigene SQL Statements dem System unterschieben. Daher sollten
   SQL Statements in .NET stets über SqlCommand Objekte mit SqlParameter Objekten realisiert
   werden. Das Thema SQL Injection lässt sich damit schon einmal fürs erste absichern.<br /><br />
   Html Injection und XSS ist ein Thema bei Gästebüchern, Foren, Web Content Management
   Systemen. Mit diesen Angriffen lassen sich z.B. Cookieinhalte auslesen und an Dritte
   weiterleiten. Die HttpCookie bietet einen kleinen Schutz vor einem Cookieklau über
   die Eigenschaft "HttpOnly = true". Diese Eigenschaft funktioniert jedoch nur im Internet
   Explorer und verhindert hier, dass ein Cookie von einer anderen Seite als der aufgerufenen
   abzufragen.<br /><br />
   Grundsätzlich können alle Eingaben nach HTML / XML Tags gefiltert werden. Dies erfolgt
   über die Seiten-Direktive "ValidateRequest". Ist dieser Wert auf "true" gesetzt, werden
   alle Eingaben, die "&lt;a-z", "&lt;!", oder "&amp;#" enthalten abgewiesen und mit
   einer "HttpRequestValidationException" beantwortet.<br /><br />
   Besser eignet sich hier vielleicht die Verwendung der Microsoft AntiXss Bibliothek,
   die zum kostenlosen Download bei Microsoft bereitsteht. Mit dieser Bibliothek lässt
   sich ein Whitelisting bestimmter HTML / XML Tags realisieren (bsp. &lt;b&gt;..&lt;/b&gt;
   für Fettdruck ist erlaubt).<br /><br />
   Erwähnenswert ist auch das von Herrn Baier angesprochene "turkish I" Problem. Stringvergleiche
   auf bestimmte Werte müssen nicht zwangsläufig zum richtigen Ergebnis führen. So ist
   in der Darstellung ein "i" beim englischen, deutschen und türkischen Zeichensatz optisch
   das selbe Zeichen, die Repräsentation im Speicher beim türkischen Zeichensatz ist
   jedoch verschieden und würde bei einem Vergleich fehlschlagen.<br /><br />
   Zum Schluss möchte ich noch das Tool "Microsoft Fiddler" erwähnen. Dieses Tool ist
   ein Http Debugging Proxy und eignet sich prima zum Nachverfolgen und Manipulieren
   von Http Requests. Herr Baier stellte dieses Tool im Zusammenhang von Manipulation
   von Postback Daten vor. Um eine Manipulation der Postback Daten und Viewstate Zuständen
   zu erschweren kann die Seitendirektive "EnableEventValidation=true" definiert werden.
   In seinem Beispiel wurde das Event eines unsichtbaren Buttons ausgelöst und ausgewertet.
   Ist die o.g. Seitendirektive jedoch aktiv reagiert ASP.NET 2.0 nur noch auf zum Abrufzeitpunkt
   sichtbare Controls. Bei eigenen Controls muss für dieses Feature eine entsprechende
   Funktion implementiert werden.<br /><br />
   Zu guter Letzt noch eine Seitendirektive: "ClientTarget='downlevel'". Mit dieser (undokumentierten)
   Anweisung lässt sich die Verarbeitung einer ASP.NET Seite bei deaktiviertem JavaScript
   simulieren. Kann auch mal praktisch sein...<br /><br />
   Die größten Schnitzer zum Thema Sicherheit sind im Übrigen unter <a href="http://www.owasp.org">http://www.owasp.org</a> zu
   finden.<br /><br /><br /><p></p><img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=0d74a70e-faa3-4cd3-a79d-a5ea76b82c0b" /></body>
      <title>Security mit ASP.NET 2.0 Teil 2 - Eingabe Validierung</title>
      <guid>http://blog.andreas-mersch.de/PermaLink,guid,0d74a70e-faa3-4cd3-a79d-a5ea76b82c0b.aspx</guid>
      <link>http://blog.andreas-mersch.de/PermaLink,guid,0d74a70e-faa3-4cd3-a79d-a5ea76b82c0b.aspx</link>
      <pubDate>Wed, 31 Jan 2007 13:12:44 GMT</pubDate>
      <description>Dieser zweite Teil der Webcastserie zum Thema Sicherheit mit ASP.NET 2.0 von Dominick Baier befasste sich schwerpunktmäßig mit der Thematik der Eingabe Validierung.&lt;br&gt;
&lt;br&gt;
Für mich interessant waren die Punkte HTML Injection, SQL Injection und Cross Side
Scripting (XSS). Hatte ich schon erwähnt, dass sich die Homepage meines Abiturjahrgangs
vorzüglich für SQL Injection eignet..? Aber das gehört hier nicht hin!&lt;br&gt;
&lt;br&gt;
Als Gegenmaßnahme, bzw. Vorsichtsmaßnahme gegen SQL Injection gehört grundsätzlich
Stringverkettungen von SQL Statements und Eingabewerten zu vermeiden. Hierbei lassen
sich mit simplen Mitteln eigene SQL Statements dem System unterschieben. Daher sollten
SQL Statements in .NET stets über SqlCommand Objekte mit SqlParameter Objekten realisiert
werden. Das Thema SQL Injection lässt sich damit schon einmal fürs erste absichern.&lt;br&gt;
&lt;br&gt;
Html Injection und XSS ist ein Thema bei Gästebüchern, Foren, Web Content Management
Systemen. Mit diesen Angriffen lassen sich z.B. Cookieinhalte auslesen und an Dritte
weiterleiten. Die HttpCookie bietet einen kleinen Schutz vor einem Cookieklau über
die Eigenschaft "HttpOnly = true". Diese Eigenschaft funktioniert jedoch nur im Internet
Explorer und verhindert hier, dass ein Cookie von einer anderen Seite als der aufgerufenen
abzufragen.&lt;br&gt;
&lt;br&gt;
Grundsätzlich können alle Eingaben nach HTML / XML Tags gefiltert werden. Dies erfolgt
über die Seiten-Direktive "ValidateRequest". Ist dieser Wert auf "true" gesetzt, werden
alle Eingaben, die "&amp;lt;a-z", "&amp;lt;!", oder "&amp;amp;#" enthalten abgewiesen und mit
einer "HttpRequestValidationException" beantwortet.&lt;br&gt;
&lt;br&gt;
Besser eignet sich hier vielleicht die Verwendung der Microsoft AntiXss Bibliothek,
die zum kostenlosen Download bei Microsoft bereitsteht. Mit dieser Bibliothek lässt
sich ein Whitelisting bestimmter HTML / XML Tags realisieren (bsp. &amp;lt;b&amp;gt;..&amp;lt;/b&amp;gt;
für Fettdruck ist erlaubt).&lt;br&gt;
&lt;br&gt;
Erwähnenswert ist auch das von Herrn Baier angesprochene "turkish I" Problem. Stringvergleiche
auf bestimmte Werte müssen nicht zwangsläufig zum richtigen Ergebnis führen. So ist
in der Darstellung ein "i" beim englischen, deutschen und türkischen Zeichensatz optisch
das selbe Zeichen, die Repräsentation im Speicher beim türkischen Zeichensatz ist
jedoch verschieden und würde bei einem Vergleich fehlschlagen.&lt;br&gt;
&lt;br&gt;
Zum Schluss möchte ich noch das Tool "Microsoft Fiddler" erwähnen. Dieses Tool ist
ein Http Debugging Proxy und eignet sich prima zum Nachverfolgen und Manipulieren
von Http Requests. Herr Baier stellte dieses Tool im Zusammenhang von Manipulation
von Postback Daten vor. Um eine Manipulation der Postback Daten und Viewstate Zuständen
zu erschweren kann die Seitendirektive "EnableEventValidation=true" definiert werden.
In seinem Beispiel wurde das Event eines unsichtbaren Buttons ausgelöst und ausgewertet.
Ist die o.g. Seitendirektive jedoch aktiv reagiert ASP.NET 2.0 nur noch auf zum Abrufzeitpunkt
sichtbare Controls. Bei eigenen Controls muss für dieses Feature eine entsprechende
Funktion implementiert werden.&lt;br&gt;
&lt;br&gt;
Zu guter Letzt noch eine Seitendirektive: "ClientTarget='downlevel'". Mit dieser (undokumentierten)
Anweisung lässt sich die Verarbeitung einer ASP.NET Seite bei deaktiviertem JavaScript
simulieren. Kann auch mal praktisch sein...&lt;br&gt;
&lt;br&gt;
Die größten Schnitzer zum Thema Sicherheit sind im Übrigen unter &lt;a href="http://www.owasp.org"&gt;http://www.owasp.org&lt;/a&gt; zu
finden.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=0d74a70e-faa3-4cd3-a79d-a5ea76b82c0b" /&gt;</description>
      <comments>http://blog.andreas-mersch.de/CommentView,guid,0d74a70e-faa3-4cd3-a79d-a5ea76b82c0b.aspx</comments>
      <category>ASP.NET;C#</category>
    </item>
    <item>
      <trackback:ping>http://blog.andreas-mersch.de/Trackback.aspx?guid=5670922e-50d4-45e6-85e5-0ea6c6d0e513</trackback:ping>
      <pingback:server>http://blog.andreas-mersch.de/pingback.aspx</pingback:server>
      <pingback:target>http://blog.andreas-mersch.de/PermaLink,guid,5670922e-50d4-45e6-85e5-0ea6c6d0e513.aspx</pingback:target>
      <dc:creator>andreas.mersch@gmx.de (andreas mersch)</dc:creator>
      <wfw:comment>http://blog.andreas-mersch.de/CommentView,guid,5670922e-50d4-45e6-85e5-0ea6c6d0e513.aspx</wfw:comment>
      <wfw:commentRss>http://blog.andreas-mersch.de/SyndicationService.asmx/GetEntryCommentsRss?guid=5670922e-50d4-45e6-85e5-0ea6c6d0e513</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">AJAX... Was ist das? AJAX steht für <i><b>A</b></i>synchronous <i><b>J</b></i>avaScript <i><b>a</b></i>nd <i><b>X</b></i>ML
   und beschreibt eine Technik, Inhalte einer Webseite je nach Kontext nachzuladen, ohne
   die Seite im Ganzen zu aktualisieren. Dr. Schwichtenberg zeigte dies am Beispiel einer
   Demowebsite für Flugauskünfte und Flugbuchungen. Hierbei wurde nach einer Suchanfrage
   lediglich der Bereich des Suchergebnisses nachgeladen.<br /><br />
   Ich habe bereits ähnliches programmiert, jedoch ohne die Verwendung der Michrosoft
   ASP.NET AJAX (früher Codename "Atlas") Erweiterung - s. <a href="http://www.fdp-bottrop.de/">http://www.fdp-bottrop.de</a><br /><br />
   Die Beispiele aus dem Webcast hat Dr. Schwichtenberg auf seiner Homepage unter <a href="http://www.it-visions.de/WWWings">http://www.IT-Visions.de/WWWings</a> zum
   Download bereitgestellt. Zu laden ist das Paket für .NET 3.0, da dieses die AJAX Komponenten
   enthält. In seinem Vortrag unterschied Schwichtenberg zwischen AJAX im engeren und
   AJAX im weiteren Sinne. AJAX im engeren Sinne ist nach seiner Aussage alles, was unmittelbar
   mit der Webseite und den asynchronen Requests zurück zum Server zusammen hängt. AJAX
   im weiteren Sinne hingegen sind Erweiterungen rund um das Thema AJAX, wie clientseitige
   Control-Bibliotheken. So hat auch Michrosoft auf der Website <a href="http://ajax.asp.net/">http://ajax.asp.net</a> neben
   der ASP.NET AJAX Komponente auch eine Sammlung mit etwa 30 Client-Controls zum Download
   bereitgestellt (s. <i>ASP.NET AJAX Control Toolkit</i>). Auf der Website <a href="http://www.ajaxian.com/">http://www.ajaxian.com</a> hingegen
   findet sich bereits eine Liste von über 260 AJAX Bibliotheken für die unterschiedlichsten
   Plattformen.<br /><br />
   AJAX verwendet die jeweilige Browser Implementierung des <i>XmlHttpRequest </i>Objektes.
   In den Browsern Firefox, Safari u.ä. ist dieses Objekt Bestandteil der JavaScript
   Engine. Im Internet Explorer bis Version 6 einschließlich wird das <i>XmlHttpRequest </i>Objekt
   über eine <i>ActiveX </i>Komponente realisiert. Zu beachten ist jedoch bei allen Browsern,
   dass die jeweilige Implementierung unterschiedlich sein kann. Hier ist also gründliches
   Testen erforderlich.<br /><br />
   Bevor man sein eigenes AJAX Projekt mit ASP.NET 2.0 starten kann, müssen die AJAX
   Komponenten von der Website <a href="http://ajax.asp.net">http://ajax.asp.net</a> geladen
   und installiert werden. Anschließend kann im Visual Studio 2005 ein neues Webprojekt
   gestartet oder ein bestehendes Projekt mit AJAX Komponenten erweitert werden. Damit
   eine Seite AJAX Funktionalitäten besitzt muss zunächst aus der Toolbox das <i>Script
   Manager</i> Element auf der Seite platziert werden. Dieses Element erzeugt zur Laufzeit
   die notwendigen JavaScript Codeblöcke. Danach ist das <i>Update Panel</i> Element
   in der Seite zu verwenden und alle übrigen ASP.NET Controls, die innerhalb eines AJAX
   Requests verwendet werden sollen dort hinein zu ziehen. Auf diese Art und Weise können
   einfache Datenbindungen und Datenaktualisierungen mit wenigen Mausklicks realisiert
   werden.<br /><br />
   Für erweiterte Funkionalitäten müssen eigene Webservices erstellt werden. Wichtig
   hierbei ist, das es sich bei diesen Webservices um <b>JSON </b>Webservices und nicht
   um klassische SOAP Webservices handelt. Die Abkürzung JSON steht für <b><i>J</i></b>ava<b><i>S</i></b>cript <b><i>O</i></b>bject <b><i>N</i></b>otation
   und ist eine auf AJAX optimierte Webservice Variante. Ein solcher Webservice kann
   einfach durch das Class Attribute 
   <br /><br /><font color="#008000" face="Courier New">[System.Web.Script.Services.ScriptService()]</font><br /><br />
   über der Klassendeklaration erstellt werden. Anschließend muss im oben bereits genannten <i>Script
   Manager</i> ein Verweis auf diesen Webservice erstellt werden. Für eine detaillierte
   Beschreibung der Vorgehensweise empfehle ich jedoch die Folien des Vortrages und die
   Beispiele von Dr. Schwichtenberg.<br /><br />
   Der nächste Webcast zu diesem Thema findet am 6.2., der dritte Teil am 8.2. statt.<br /><br /><img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=5670922e-50d4-45e6-85e5-0ea6c6d0e513" /></body>
      <title>ASP.NET AJAX</title>
      <guid>http://blog.andreas-mersch.de/PermaLink,guid,5670922e-50d4-45e6-85e5-0ea6c6d0e513.aspx</guid>
      <link>http://blog.andreas-mersch.de/PermaLink,guid,5670922e-50d4-45e6-85e5-0ea6c6d0e513.aspx</link>
      <pubDate>Fri, 19 Jan 2007 06:37:27 GMT</pubDate>
      <description>AJAX... Was ist das? AJAX steht für &lt;i&gt;&lt;b&gt;A&lt;/b&gt;&lt;/i&gt;synchronous &lt;i&gt;&lt;b&gt;J&lt;/b&gt;&lt;/i&gt;avaScript &lt;i&gt;&lt;b&gt;a&lt;/b&gt;&lt;/i&gt;nd &lt;i&gt;&lt;b&gt;X&lt;/b&gt;&lt;/i&gt;ML
und beschreibt eine Technik, Inhalte einer Webseite je nach Kontext nachzuladen, ohne
die Seite im Ganzen zu aktualisieren. Dr. Schwichtenberg zeigte dies am Beispiel einer
Demowebsite für Flugauskünfte und Flugbuchungen. Hierbei wurde nach einer Suchanfrage
lediglich der Bereich des Suchergebnisses nachgeladen.&lt;br&gt;
&lt;br&gt;
Ich habe bereits ähnliches programmiert, jedoch ohne die Verwendung der Michrosoft
ASP.NET AJAX (früher Codename "Atlas") Erweiterung - s. &lt;a href="http://www.fdp-bottrop.de/"&gt;http://www.fdp-bottrop.de&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Die Beispiele aus dem Webcast hat Dr. Schwichtenberg auf seiner Homepage unter &lt;a href="http://www.it-visions.de/WWWings"&gt;http://www.IT-Visions.de/WWWings&lt;/a&gt; zum
Download bereitgestellt. Zu laden ist das Paket für .NET 3.0, da dieses die AJAX Komponenten
enthält. In seinem Vortrag unterschied Schwichtenberg zwischen AJAX im engeren und
AJAX im weiteren Sinne. AJAX im engeren Sinne ist nach seiner Aussage alles, was unmittelbar
mit der Webseite und den asynchronen Requests zurück zum Server zusammen hängt. AJAX
im weiteren Sinne hingegen sind Erweiterungen rund um das Thema AJAX, wie clientseitige
Control-Bibliotheken. So hat auch Michrosoft auf der Website &lt;a href="http://ajax.asp.net/"&gt;http://ajax.asp.net&lt;/a&gt; neben
der ASP.NET AJAX Komponente auch eine Sammlung mit etwa 30 Client-Controls zum Download
bereitgestellt (s. &lt;i&gt;ASP.NET AJAX Control Toolkit&lt;/i&gt;). Auf der Website &lt;a href="http://www.ajaxian.com/"&gt;http://www.ajaxian.com&lt;/a&gt; hingegen
findet sich bereits eine Liste von über 260 AJAX Bibliotheken für die unterschiedlichsten
Plattformen.&lt;br&gt;
&lt;br&gt;
AJAX verwendet die jeweilige Browser Implementierung des &lt;i&gt;XmlHttpRequest &lt;/i&gt;Objektes.
In den Browsern Firefox, Safari u.ä. ist dieses Objekt Bestandteil der JavaScript
Engine. Im Internet Explorer bis Version 6 einschließlich wird das &lt;i&gt;XmlHttpRequest &lt;/i&gt;Objekt
über eine &lt;i&gt;ActiveX &lt;/i&gt;Komponente realisiert. Zu beachten ist jedoch bei allen Browsern,
dass die jeweilige Implementierung unterschiedlich sein kann. Hier ist also gründliches
Testen erforderlich.&lt;br&gt;
&lt;br&gt;
Bevor man sein eigenes AJAX Projekt mit ASP.NET 2.0 starten kann, müssen die AJAX
Komponenten von der Website &lt;a href="http://ajax.asp.net"&gt;http://ajax.asp.net&lt;/a&gt; geladen
und installiert werden. Anschließend kann im Visual Studio 2005 ein neues Webprojekt
gestartet oder ein bestehendes Projekt mit AJAX Komponenten erweitert werden. Damit
eine Seite AJAX Funktionalitäten besitzt muss zunächst aus der Toolbox das &lt;i&gt;Script
Manager&lt;/i&gt; Element auf der Seite platziert werden. Dieses Element erzeugt zur Laufzeit
die notwendigen JavaScript Codeblöcke. Danach ist das &lt;i&gt;Update Panel&lt;/i&gt; Element
in der Seite zu verwenden und alle übrigen ASP.NET Controls, die innerhalb eines AJAX
Requests verwendet werden sollen dort hinein zu ziehen. Auf diese Art und Weise können
einfache Datenbindungen und Datenaktualisierungen mit wenigen Mausklicks realisiert
werden.&lt;br&gt;
&lt;br&gt;
Für erweiterte Funkionalitäten müssen eigene Webservices erstellt werden. Wichtig
hierbei ist, das es sich bei diesen Webservices um &lt;b&gt;JSON &lt;/b&gt;Webservices und nicht
um klassische SOAP Webservices handelt. Die Abkürzung JSON steht für &lt;b&gt;&lt;i&gt;J&lt;/i&gt;&lt;/b&gt;ava&lt;b&gt;&lt;i&gt;S&lt;/i&gt;&lt;/b&gt;cript &lt;b&gt;&lt;i&gt;O&lt;/i&gt;&lt;/b&gt;bject &lt;b&gt;&lt;i&gt;N&lt;/i&gt;&lt;/b&gt;otation
und ist eine auf AJAX optimierte Webservice Variante. Ein solcher Webservice kann
einfach durch das Class Attribute 
&lt;br&gt;
&lt;br&gt;
&lt;font color="#008000" face="Courier New"&gt;[System.Web.Script.Services.ScriptService()]&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
über der Klassendeklaration erstellt werden. Anschließend muss im oben bereits genannten &lt;i&gt;Script
Manager&lt;/i&gt; ein Verweis auf diesen Webservice erstellt werden. Für eine detaillierte
Beschreibung der Vorgehensweise empfehle ich jedoch die Folien des Vortrages und die
Beispiele von Dr. Schwichtenberg.&lt;br&gt;
&lt;br&gt;
Der nächste Webcast zu diesem Thema findet am 6.2., der dritte Teil am 8.2. statt.&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=5670922e-50d4-45e6-85e5-0ea6c6d0e513" /&gt;</description>
      <comments>http://blog.andreas-mersch.de/CommentView,guid,5670922e-50d4-45e6-85e5-0ea6c6d0e513.aspx</comments>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://blog.andreas-mersch.de/Trackback.aspx?guid=5f2ddeeb-f14a-4ff8-a5fc-bdd7a8f8089d</trackback:ping>
      <pingback:server>http://blog.andreas-mersch.de/pingback.aspx</pingback:server>
      <pingback:target>http://blog.andreas-mersch.de/PermaLink,guid,5f2ddeeb-f14a-4ff8-a5fc-bdd7a8f8089d.aspx</pingback:target>
      <dc:creator>andreas.mersch@gmx.de (andreas mersch)</dc:creator>
      <wfw:comment>http://blog.andreas-mersch.de/CommentView,guid,5f2ddeeb-f14a-4ff8-a5fc-bdd7a8f8089d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.andreas-mersch.de/SyndicationService.asmx/GetEntryCommentsRss?guid=5f2ddeeb-f14a-4ff8-a5fc-bdd7a8f8089d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Gestern, 17.01.2007, habe ich an einem
   Webcast von Dominick Baier (<a href="http://www.leastprivilege.com">http://www.leastprivilege.com</a>)
   zum Thema "<i>Security mit ASP.NET 2.0</i>" teilgenommen. Dieser Webcast ist Teil
   einer Serie und der Schwerpunkt der gestrigen Veranstaltung war "<i>Authentifizierung
   und Autorisierung</i>". Für ASP.NET Entwickler, die schon mit ASP.NET 1.1 gearbeitet
   haben, keine großen neuen Erkenntnisse. Einige Kleinigkeiten möchte ich dennoch als
   Ergebnisse und als Gedankenstütze hier festhalten:<br /><br /><ul><li>
         Die Sicherheitsmechanismen von ASP.NET schützen nur Webinhalte, die auch von ASP.NET
         verwaltet werden. Statische Inhalte wie HTML Dateien, Grafiken oder Dokumente werden
         standardmäßig vom IIS direkt ausgeliefert. Folglich fallen diese Dateitypen <u>nicht</u> unter
         die Sicherheitsmechanismen von ASP.NET.<br /><br />
         Sollen diese Dateien dennoch geschützt werden, müssen im IIS entsprechende Mappings
         (Wildcard-Mapping in Windows Server 2003) konfiguriert werden. Hierbei kann es dann
         aber Einbußen in der Performance geben.<br /><br /></li><li>
         ASP.NET verwendet verschiedene Authorization Provider (je nach Bedarf), die als Module
         in der Verarbeitungs-Pipeline registriert sind. Zu allen diesen Providern ist der
         Quellcode bei Microsoft erhältlich: <a href="http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi">http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi</a><br /><br /></li><li>
         Forms Authentication kann über Applikationsgrenzen (z.B. für zwei getrennte Webapplikationen)
         auf dem gleichen Server verwendet werden (-&gt; SSO). In diesem Fall muss bei allen
         Applikationen in der <i>web.config</i> ein identischer <i>&lt;machineKey&gt;</i> Tag
         vorhanden sein.<br /><br /></li><li>
         Mit den neuen Membership Providern von ASP.NET 2.0 existieren nun einheitliche Schnittstellen
         für Authentifizierungsmechsnismen, so dass diese ohne Änderung des Quellcodes austauschbar
         sind. Standardcontrols, wie das neue <i>asp:Login</i> Control verwenden den in der <i>web.config</i> konfigurieren
         Membership Provider.</li></ul>
   Soweit fürs Erste. Am 29.1.2007 hält Dominick Baier den zweiten Teil dieser Serie.
   Bis dahin...<p></p><img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=5f2ddeeb-f14a-4ff8-a5fc-bdd7a8f8089d" /></body>
      <title>Security mit ASP.NET 2.0</title>
      <guid>http://blog.andreas-mersch.de/PermaLink,guid,5f2ddeeb-f14a-4ff8-a5fc-bdd7a8f8089d.aspx</guid>
      <link>http://blog.andreas-mersch.de/PermaLink,guid,5f2ddeeb-f14a-4ff8-a5fc-bdd7a8f8089d.aspx</link>
      <pubDate>Thu, 18 Jan 2007 07:35:32 GMT</pubDate>
      <description>Gestern, 17.01.2007, habe ich an einem Webcast von Dominick Baier
(&lt;a href="http://www.leastprivilege.com"&gt;http://www.leastprivilege.com&lt;/a&gt;)
zum Thema "&lt;i&gt;Security mit ASP.NET 2.0&lt;/i&gt;" teilgenommen. Dieser Webcast ist Teil
einer Serie und der Schwerpunkt der gestrigen Veranstaltung war "&lt;i&gt;Authentifizierung
und Autorisierung&lt;/i&gt;". Für ASP.NET Entwickler, die schon mit ASP.NET 1.1 gearbeitet
haben, keine großen neuen Erkenntnisse. Einige Kleinigkeiten möchte ich dennoch als
Ergebnisse und als Gedankenstütze hier festhalten:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
   &lt;li&gt;
      Die Sicherheitsmechanismen von ASP.NET schützen nur Webinhalte, die auch von ASP.NET
      verwaltet werden. Statische Inhalte wie HTML Dateien, Grafiken oder Dokumente werden
      standardmäßig vom IIS direkt ausgeliefert. Folglich fallen diese Dateitypen &lt;u&gt;nicht&lt;/u&gt; unter
      die Sicherheitsmechanismen von ASP.NET.&lt;br&gt;
      &lt;br&gt;
      Sollen diese Dateien dennoch geschützt werden, müssen im IIS entsprechende Mappings
      (Wildcard-Mapping in Windows Server 2003) konfiguriert werden. Hierbei kann es dann
      aber Einbußen in der Performance geben.&lt;br&gt;
      &lt;br&gt;
   &lt;/li&gt;
   &lt;li&gt;
      ASP.NET verwendet verschiedene Authorization Provider (je nach Bedarf), die als Module
      in der Verarbeitungs-Pipeline registriert sind. Zu allen diesen Providern ist der
      Quellcode bei Microsoft erhältlich: &lt;a href="http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi"&gt;http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi&lt;/a&gt;
      &lt;br&gt;
      &lt;br&gt;
   &lt;/li&gt;
   &lt;li&gt;
      Forms Authentication kann über Applikationsgrenzen (z.B. für zwei getrennte Webapplikationen)
      auf dem gleichen Server verwendet werden (-&amp;gt; SSO). In diesem Fall muss bei allen
      Applikationen in der &lt;i&gt;web.config&lt;/i&gt; ein identischer &lt;i&gt;&amp;lt;machineKey&amp;gt;&lt;/i&gt; Tag
      vorhanden sein.&lt;br&gt;
      &lt;br&gt;
   &lt;/li&gt;
   &lt;li&gt;
      Mit den neuen Membership Providern von ASP.NET 2.0 existieren nun einheitliche Schnittstellen
      für Authentifizierungsmechsnismen, so dass diese ohne Änderung des Quellcodes austauschbar
      sind. Standardcontrols, wie das neue &lt;i&gt;asp:Login&lt;/i&gt; Control verwenden den in der &lt;i&gt;web.config&lt;/i&gt; konfigurieren
      Membership Provider.&lt;/li&gt;
&lt;/ul&gt;
Soweit fürs Erste. Am 29.1.2007 hält Dominick Baier den zweiten Teil dieser Serie.
Bis dahin...&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.andreas-mersch.de/aggbug.ashx?id=5f2ddeeb-f14a-4ff8-a5fc-bdd7a8f8089d" /&gt;</description>
      <comments>http://blog.andreas-mersch.de/CommentView,guid,5f2ddeeb-f14a-4ff8-a5fc-bdd7a8f8089d.aspx</comments>
      <category>ASP.NET;C#</category>
    </item>
  </channel>
</rss>