<?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>Security Tools</title><link>http://blogs.msdn.com/b/securitytools/</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.19849 (Build: 5.6.583.19849)</generator><item><title>Microsoft Security Bulletin MS12-007– Vulnerability in AntiXSS Library Could Allow Information Disclosure</title><link>http://blogs.msdn.com/b/securitytools/archive/2012/01/10/microsoft-security-bulletin-ms12-007-vulnerability-in-antixss-library-could-allow-information-disclosure.aspx</link><pubDate>Tue, 10 Jan 2012 18:04:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10255197</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=10255197</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2012/01/10/microsoft-security-bulletin-ms12-007-vulnerability-in-antixss-library-could-allow-information-disclosure.aspx#comments</comments><description>&lt;p&gt;Today sees the release of &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28589"&gt;AntiXSS v4.2&lt;/a&gt; in order to address &lt;a href="http://technet.microsoft.com/en-us/security/bulletin/ms12-007"&gt;MS12-007&lt;/a&gt;. As AntiXSS is a developer tool developers need to download the latest version, test, then deploy the web sites using the library. nuget has also updated – if you’ve added AntiXSS via nuget you’ll need to &lt;a href="http://docs.nuget.org/docs/start-here/managing-nuget-packages-using-the-dialog#Updating_a_Package"&gt;update the package&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;It is recommended you test and apply the new version as soon as possible.&lt;/p&gt;  &lt;p&gt;The vulnerability only affects the HTML sanitizer. The sanitizer has been changed to remove all CSS it encounters, this new behaviour means that if you were expect CSS formatting to remain after sanitization this is no longer the case.&lt;/p&gt;  &lt;p&gt;In addition to the change necessary to correct the vulnerability there are a few new features;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Minimum Requirements.      &lt;br /&gt;You can now, once again, use the encoder libraries with .NET 2.0. The installer will create directories for each framework version supported, .NET 2.0, .NET 3.5 and .NET 4.0 which contain an optimized version of the encoders for that platform.      &lt;h4&gt;&lt;/h4&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;Invalid Unicode no longer throws an exception.      &lt;br /&gt;Invalid Unicode characters are now replaced with the Unicode replacement character, U+FFFD (�). Previously, when encoding strings through HtmlEncode, HtmlAttributeEncode, XmlEncode, XmlAttributeEncode or CssEncode invalid Unicode characters would be detected and an exception thrown.      &lt;h4&gt;&lt;/h4&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;UrlPathEncode added.      &lt;br /&gt;The encoding library now has UrlPathEncode which will encode a string for use as the path part of a URL.       &lt;h4&gt;&lt;/h4&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;.NET 4.0 encoder support.      &lt;br /&gt;There’s finally an official way to swap AntiXSS into the framework. If you are using .NET 4.0 ensure you are using the .NET 4.0 version of the encoding library and then edit your web.config and add the encoderType attribute to the httpRuntime element; i.e.       &lt;br /&gt;&lt;code&gt;&amp;lt;httpRuntime encoderType=&amp;quot;Microsoft.Security.Application.AntiXssEncoder, AntiXssLibrary&amp;quot;/&amp;gt;&lt;/code&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The nuget package does not swap out the encoder as nuget configuration transforms can’t be made framework version specific yet so you will have to do that manually. Source code will uploaded to &lt;a href="http://wpl.codeplex.com/"&gt;codeplex&lt;/a&gt; within the next few days.&lt;/p&gt;  &lt;p&gt;Remember that downloading the new version is not enough – you will need to update your projects to use the new version then publish them to your web servers.&lt;/p&gt;  &lt;p&gt;This release has also merged code from the .NET framework, taking some of their hard work in integrating the core AntiXSS functions into v4.5. There are some performance improvements in encoding.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10255197" width="1" height="1"&gt;</description></item><item><title>CAT.NET and our fiscal year end</title><link>http://blogs.msdn.com/b/securitytools/archive/2011/04/11/cat-net-and-our-fiscal-year-end.aspx</link><pubDate>Mon, 11 Apr 2011 16:56:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10152145</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=10152145</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2011/04/11/cat-net-and-our-fiscal-year-end.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2"&gt;At this point in time we are accepting recommendations, suggestions and new features.&amp;#160; However, we do not have any planned updates for the remainder of the fiscal year.&amp;#160; We are going through our FY12 planning and CAT.NET is on the list of requests for next year.&amp;#160; We will know by the end of June if funding has be approved.&amp;#160; At that time we’ll notify people of the budgetary decisions.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10152145" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/CAT-NET/">CAT.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Product+Planning/">Product Planning</category></item><item><title>CAT.NET Update – Long Overdue</title><link>http://blogs.msdn.com/b/securitytools/archive/2011/02/21/cat-net-update-long-overdue.aspx</link><pubDate>Mon, 21 Feb 2011 19:00:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10132320</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=10132320</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2011/02/21/cat-net-update-long-overdue.aspx#comments</comments><description>&lt;p&gt;Frank Brisse here…&lt;/p&gt;  &lt;p&gt;I wanted to provide an update to the CAT.NET project since it’s been a while since my last communication. Internally we have version 2.0 of CAT.NET running. Unfortunately, some of the features we relied on in Visual Studio’s code analysis did not make it into the final product. We are working with the Visual Studio team to include the features needed. &lt;/p&gt;  &lt;p&gt;In the meantime our team has been investigating options to bypass the missing libraries. This is not an ideal solution because we’ll be omitting the seamless integration with Visual Studio. We believe we have a solution and have provided estimates to fix this problem. Because this effort was not planned, we are investigating how to fit this effort into our current work load. We should have some news by the end of March if not sooner.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10132320" width="1" height="1"&gt;</description></item><item><title>AntiXSS 4.0 Released</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/09/30/antixss_2D00_4_2D00_0_2D00_release_2D00_notes.aspx</link><pubDate>Thu, 30 Sep 2010 22:42:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10070065</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=10070065</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/09/30/antixss_2D00_4_2D00_0_2D00_release_2D00_notes.aspx#comments</comments><description>&lt;p&gt;AntiXSS 4.0 has been released and is available from &lt;a title="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=f4cd231b-7e06-445b-bec7-343e5884e651" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=f4cd231b-7e06-445b-bec7-343e5884e651"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=f4cd231b-7e06-445b-bec7-343e5884e651&lt;/a&gt;. The new source will be published to CodePlex within the next few days.&lt;/p&gt;  &lt;h3&gt;Minimum Requirements&lt;/h3&gt;  &lt;p&gt;.NET Framework 3.5&lt;/p&gt;  &lt;h3&gt;Return Values&lt;/h3&gt;  &lt;p&gt;If you pass a null as the value an encoding function the function will now return null. The previous behavior was to return String.Empty.&lt;/p&gt;  &lt;h3&gt;Medium Trust Support&lt;/h3&gt;  &lt;p&gt;The HTML Sanitization methods, &lt;b&gt;GetSafeHtml()&lt;/b&gt; and &lt;b&gt;GetSafeHtmlFragment()&lt;/b&gt; have been moved to a separate assembly. This enables the AntiXssLibrary assembly to run in medium trust environments, a common user request. If you wish to use the Html Sanitization library you must now include the &lt;b&gt;HtmlSanitizationLibrary&lt;/b&gt; assembly. This assembly requires full trust and the ability to run unsafe code.&lt;/p&gt;  &lt;h3&gt;Adjustable safe-listing for HTML/XML Encoding&lt;/h3&gt;  &lt;p&gt;The safe list for HTML and XML encoding is now adjustable. The &lt;b&gt;UnicodeCharacterEncoder.MarkAsSafe()&lt;/b&gt; method allows to you choose from the Unicode Code Charts which languages your web application normally accepts. Safe-listing a language code chart leaves the defined characters in their native form during encoding, which increases readability in the HTML/XML document and speeds up encoding. Certain dangerous characters will also be encoded.&lt;/p&gt;  &lt;p&gt;The language code charts are defined in the &lt;b&gt;Microsoft.Security.Application.LowerCodeCharts&lt;/b&gt;, &lt;b&gt;Microsoft.Security.Application.LowerMidCodeCharts&lt;/b&gt;, &lt;b&gt;Microsoft.Security.Application.MidCodeCharts&lt;/b&gt;, &lt;b&gt;Microsoft.Security.Application.UpperMidCodeCharts&lt;/b&gt; and &lt;b&gt;Microsoft.Security.Application.UpperCodeCharts&lt;/b&gt; enumerations.&lt;/p&gt;  &lt;p&gt;It is suggested you safe list your acceptable languages during your application initialization.&lt;/p&gt;  &lt;h3&gt;Invalid unicode character detection&lt;/h3&gt;  &lt;p&gt;If any of the HTML or XML encoding methods encounter a character with a character code of 0xFFFE or 0xFFFF, the characters used to detect byte order at the beginning of files an &lt;b&gt;InvalidUnicodeValueException&lt;/b&gt; will be thrown.&lt;/p&gt;  &lt;h3&gt;Surrogate Character Support in HTML and XML encoding&lt;/h3&gt;  &lt;p&gt;Support for surrogate character pairs for Unicode characters outside the basic multilingual plane has been improved. Such character pairs are now combined and encoded as their &amp;amp;xxxxx; value. If a high surrogate pair character is encountered which is not followed by a low surrogate pair character, or a low surrogate pair character is encountered which is not preceded by a high surrogate pair character an &lt;b&gt;InvalidSurrogatePairException&lt;/b&gt; is thrown.&lt;/p&gt;  &lt;h3&gt;HTML 4.01 Named Entity Support&lt;/h3&gt;  &lt;p&gt;A new overload of the HtmlEncode method, &lt;b&gt;Encoder.HtmlEncode(string input, bool useNamedEntities)&lt;/b&gt; allows you to specify if the named entities from the HTML 4.01 specification should be used in preference to &amp;amp;#xxxx; encoding when a named entity exists. For example if useNamedEntities parameter is set to true the copyright entity would be encoded as &amp;amp;copy;.&lt;/p&gt;  &lt;h3&gt;HtmlFormUrlEncode&lt;/h3&gt;  &lt;p&gt;A new encoding type suitable for using in encoding Html POST form submissions is now available via &lt;b&gt;Encoder.HtmlFormUrlEncode&lt;/b&gt;. This encodes according to the W3C specifications for application/x-www-form-urlencoded MIME type.&lt;/p&gt;  &lt;h3&gt;LDAP Encoding changes&lt;/h3&gt;  &lt;p&gt;The LdapEncode function has been deprecated in favor of two new functions, &lt;b&gt;Encoder.LdapFilterEncode(string)&lt;/b&gt; and &lt;b&gt;Encoder.LdapDistinguishedNameEncode(string)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Encoder.LdapFilterEncode&lt;/b&gt; encodes input according to RFC4515 where unsafe values are converted to \XX where XX is the representation of the unsafe character&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Encoder.LdapDistinguishedNameEncode&lt;/b&gt; encodes input according to RFC 2253 where unsafe characters are converted to #XX where XX is the representation of the unsafe character and the comma, plus, quote, slash, less than and great than signs are escaped using slash notation (\X). In addition to this a space or octothorpe (#) at the beginning of the input string is \ escaped as is a space at the end of a string.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;LdapDistinguishedNameEncode(string, bool, bool)&lt;/b&gt; is also provided so you may turn off the initial or final character escaping rules, for example if you are concatenating the escaped distinguished name fragment into the midst of a complete distinguished name.&lt;/p&gt;  &lt;h3&gt;MarkOutput&lt;/h3&gt;  &lt;p&gt;The ability to mark output using an HtmlEncode overload and query string parameter has been removed.&lt;/p&gt;  &lt;p&gt;The Security Runtime Engine developer continues in parallel to my other work, but we’ve now separated the two libraries so you don’t have to wait for AntiXSS updates. The WPL will continue to be available as source only from&amp;#160; &lt;a href="http://wpl.codeplex.com/"&gt;codeplex&lt;/a&gt; until we’re happy with the code model and quality. Once that happens you can expect to see a binary release, but there are no planned release dates as yet.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10070065" width="1" height="1"&gt;</description></item><item><title>How to View a Report in WACA?</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/09/24/how-to-view-a-report-in-waca.aspx</link><pubDate>Fri, 24 Sep 2010 16:03:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10067383</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=10067383</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/09/24/how-to-view-a-report-in-waca.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=60585590-57df-4fc1-8f0c-05a286059406"&gt;Web Application Configuration Analyzer v1.0&lt;/a&gt; is the latest tool released by our team that scans a machine for deployment best practices. Here is how you can use this tool to view a scan report which provides resolution details for failed rules.&lt;/p&gt;  &lt;p&gt;1. From the presented Launchpad under the “Quick Actions” Section screen click on the “&lt;b&gt;View scan results&lt;/b&gt;” link or go to “&lt;b&gt;File&lt;/b&gt;” menu and select “&lt;b&gt;View scan results&lt;/b&gt;”. You can also get to this screen by clicking on the “View Report” button after a scan, which will automatically select that scan for the report.&lt;/p&gt;  &lt;p&gt;2. From the first drop down box, select a server to view a scan result. The drop down box displays all the server names for which results have been generated by the tool. Upon selecting the server name, the list box displays the scanned dates and times starting with latest date and timestamp.    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-19-45-metablogapi/7024.clip_5F00_image002_5F00_7F569B0B.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-19-45-metablogapi/3113.clip_5F00_image002_5F00_thumb_5F00_6D0DD449.jpg" width="550" height="637" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. The report is divided into multiple sections. You can navigate to corresponding section by clicking the links in summary table. There are four sections for every report. First is the Summary, which tells you about the machine and its specific attributes. This section also serves as the index allowing you to select a link to jump to that specific section. The next section is the General application Rules. This is where all rules pertaining to a machine regardless to the machines purpose. The next section contains the IIS Application rules. If a user knows this machine is an IIS box then this section should have all the security rules for IIS in one contained section. The last section is for SQL server. Assuming the server is a SQL server machine all rules pertaining to SQL Server will be in this section.&lt;/p&gt;  &lt;p&gt;4. Results from scanning a machine falls into one of four states: &lt;b&gt;Passed, Failed, Indeterminate and Not Applicable&lt;/b&gt;. Passed indicates the rules was tested and based on WACA’s scan discovery the rule passed. Failed indicates after the rule was scanned for the discovery was the rule failed the test. &lt;b&gt;Not Applicable&lt;/b&gt; state is used when specific application such as IIS or SQL Server is not present on the target machine. &lt;b&gt;Indeterminate&lt;/b&gt; state is applied when a specific rule cannot find the underlying data due to missing information to process the rule. For example, Indeterminate state could be returned for the “Unnecessary service (Alerter) is not running” rule if the service itself is not present on the target machine. Investigate &lt;b&gt;indeterminate&lt;/b&gt; rules by using the descriptions and resolutions from &lt;b&gt;Excel export&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;5. Severity and resolution provide additional context to the rule and only failed rules include resolutions to fix the violation. Context may determine whether a failure in WACA is a bug to be fixed. Some checks, for example, are applicable for servers facing the extranet, but would be considered false positives for any other environment. The description for the checks provides guidance for these scenarios.&lt;/p&gt;  &lt;p&gt;6. Exporting to Excel and using the Filter feature can help with quickly identifying and managing failures.&lt;/p&gt;  &lt;p&gt;Thanks    &lt;br /&gt;Anil RV&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10067383" width="1" height="1"&gt;</description></item><item><title>How to Scan a Server using WACA?</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/09/24/how-to-scan-a-server-using-waca.aspx</link><pubDate>Fri, 24 Sep 2010 16:03:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10067382</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=10067382</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/09/24/how-to-scan-a-server-using-waca.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=60585590-57df-4fc1-8f0c-05a286059406"&gt;Web Application Configuration Analyzer v1.0&lt;/a&gt; is the latest tool released by our team that scans a machine for deployment best practices. Here is how you can use this tool to scan a machine for these best practices.&lt;/p&gt;  &lt;p&gt;1. Launch the application by going to Windows Start Menu and selecting “Microsoft Information Security”, “Web Application Configuration Analyzer v1.0” and “Web Application Configuration Analyzer”.&lt;/p&gt;  &lt;p&gt;2. From the presented Launchpad screen under the “Quick Actions” Section click on the “&lt;b&gt;Scan a machine&lt;/b&gt;” link or go to “&lt;b&gt;File&lt;/b&gt;” menu and select “&lt;b&gt;Scan a machine&lt;/b&gt;”.     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-19-45-metablogapi/0045.clip_5F00_image002_5F00_6DAA78A5.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-19-45-metablogapi/6320.clip_5F00_image002_5F00_thumb_5F00_00EB2F45.jpg" width="560" height="420" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Enter the fully qualified domain name of the target machine and click “&lt;b&gt;Scan&lt;/b&gt;” button to start the scan. You can also enter the SQL instance name to scan a SQL server on that machine.     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-19-45-metablogapi/3771.clip_5F00_image004_5F00_72ACB654.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-19-45-metablogapi/4760.clip_5F00_image004_5F00_thumb_5F00_04894A22.jpg" width="560" height="420" /&gt;&lt;/a&gt;     &lt;br /&gt;Note that you need &lt;b&gt;administrative permissions&lt;/b&gt; on the target machine along with remote registry and WMI services. The tool will perform prerequisite scanning first to determine server existence, administrative access, IIS and SQL versions and remote services availability. If WACA is unable to connect to the SQL Server either because of network or permission issues, the user will be prompted to continue the scan. &lt;/p&gt;  &lt;p&gt;4. It is not required that the target machine have either IIS or SQL installed, WACA will recognize this and report its results accordingly.&lt;/p&gt;  &lt;p&gt;5. A message is displayed indicating that the scan is completed. Click on the “View Report” button to view the report.&lt;/p&gt;  &lt;p&gt;Thanks    &lt;br /&gt;Anil RV&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10067382" width="1" height="1"&gt;</description></item><item><title>Web Application Configuration Analyzer v1.0 RTW is live!</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/09/20/web-application-configuration-analyzer-v1-0-rtw-is-live.aspx</link><pubDate>Mon, 20 Sep 2010 20:58:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10065275</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=10065275</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/09/20/web-application-configuration-analyzer-v1-0-rtw-is-live.aspx#comments</comments><description>&lt;p&gt;I am excited to announce the release of Web Application Configuration Analyzer v1.0 tool. The following is the quick overview of the tool and its features.&lt;/p&gt;  &lt;p&gt;Web Application Configuration Analyzer (WACA) is a tool that scans a server against a set of best practices recommended for pre-production and production servers. It can also be used by developers to ensure that their codebase works within a secure / hardened environment (although many of the checks are not as applicable for developers). The list of best practices is derived from the Microsoft Information Security &amp;amp; Risk Management Deployment Review Standards used internally at Microsoft to harden production and pre-production environments for line of business applications. The Deployment Review standards themselves were derived from content released by Microsoft Patterns &amp;amp; Practices, in particular: Improving Web Application Security: Threats and Countermeasures available at: &lt;a href="http://msdn.microsoft.com/en-us/library/ms994921.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms994921.aspx&lt;/a&gt;. It uses an agent-less scan that requires the user to have admin privileges on the target server, as well as any SQL Server instances running on that machine.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Scan a machine for more than 140 rules &lt;/li&gt;    &lt;li&gt;Generate HTML based reports &lt;/li&gt;    &lt;li&gt;Compare two scans to view the differences &lt;/li&gt;    &lt;li&gt;Export results to Excel &lt;/li&gt;    &lt;li&gt;Export results to Team Foundation Server &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can download the tool from &lt;a title="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=60585590-57df-4fc1-8f0c-05a286059406" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=60585590-57df-4fc1-8f0c-05a286059406"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=60585590-57df-4fc1-8f0c-05a286059406&lt;/a&gt;. You can view a demo of the tool in &lt;a href="http://channel9.msdn.com/Blogs/Jossie/Web-Application-Configuration-Analizer-WACA"&gt;this channel9 screencast&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Thanks    &lt;br /&gt;Anil RV&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10065275" width="1" height="1"&gt;</description></item><item><title>CAT.NET v2.0 Update</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/06/30/cat-net-v2-0-update.aspx</link><pubDate>Tue, 29 Jun 2010 23:00:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10032391</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=10032391</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/06/30/cat-net-v2-0-update.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Frank Brisse here… I wanted to provide an update on CAT.NET v2.0.&amp;#160; We were looking to release CAT.NET v2.0 in June but ran into a design issue at the last moment causing us to delay the release.&amp;#160; At this point we are working with internal teams to determine how to best fix this concern.&amp;#160; Once we have a solution and a definitive timeframe we’ll announce the new release date.&amp;#160; &lt;/p&gt;  &lt;p&gt;While we’re looking to resolve this issue we still want to hear your feedback about features needed in future releases.&amp;#160; Shortly we’ll release a list of features that will be included in CAT.NET v2.0 and items on the product backlog for future releases.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10032391" width="1" height="1"&gt;</description></item><item><title>The May 2010 Security Runtime Engine Preview is now available on CodePlex</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/05/27/the_2D00_sre_2D00_preview_2D00_is_2D00_now_2D00_available_2D00_on_2D00_codeplex.aspx</link><pubDate>Thu, 27 May 2010 17:18:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10016444</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=10016444</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/05/27/the_2D00_sre_2D00_preview_2D00_is_2D00_now_2D00_available_2D00_on_2D00_codeplex.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://wpl.codeplex.com/"&gt;WPL&lt;/a&gt; site on CodePlex now has the &lt;a href="http://wpl.codeplex.com/releases/view/44707"&gt;May CTP code only release&lt;/a&gt; for the Web Protection Library and a Word document &lt;a href="http://wpl.codeplex.com/releases/view/44707#DownloadId=124084"&gt;introducing the new extensibility points&lt;/a&gt; for the Security Runtime Engine.&lt;/p&gt;  &lt;p&gt;We haven’t released binaries because it’s just a preview, it is in no way ready for production.&lt;/p&gt;  &lt;p&gt;So why make the &lt;a href="http://wpl.codeplex.com/SourceControl/changeset/changes/52310"&gt;source&lt;/a&gt; available? We want feedback. This represents a rewrite of the Security Runtime and a new way for you to easily write plug-ins for it. Rather than simply decide what’s best for our users we wanted to show you the direction we’re taking and give you a change to influence it.&lt;/p&gt;  &lt;p&gt;Missing from the sure are any tests – they do exist and will be published in the next source drop. There are no inspectors or logging plug-ins – because we would like you to work through the tutorial, then look through the code, think about how you would use them and try to write your own. If we supplied some example inspectors the temptation would be there to use those as a starting template for your own.&lt;/p&gt;  &lt;p&gt;So please download, read the source, play around (on a test web site) and do leave feedback and bug reports/issues for us on CodePlex.&lt;/p&gt;  &lt;p&gt;Barry&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10016444" width="1" height="1"&gt;</description></item><item><title>Farewell from Mark Curphey &amp; Please Help Me Fight Blood Cancer</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/03/30/farewell-from-mark-curphey-please-help-me-fight-blood-cancer.aspx</link><pubDate>Tue, 30 Mar 2010 00:40:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9987118</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9987118</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/03/30/farewell-from-mark-curphey-please-help-me-fight-blood-cancer.aspx#comments</comments><description>&lt;p&gt;Mark Curphey here…..&lt;/p&gt;  &lt;p&gt;It is with some degree of sadness that I have to hang up my spurs from this blog. Next Monday I take up a new role on the Server &amp;amp; Tools Online team (think MSDN &amp;amp; codeplex.com) where I will be heading up the subscriptions engineering team. I have held various security roles in big and small companies for the last 15 years and so it is very much a new chapter in my life as I follow my passions of modern development practices, online community and user experience. I call it Curphey 2.0!&lt;/p&gt;  &lt;p&gt;The work of the Security Tools team will not change or be affected in any way. There is great work continuing including CAT.NET, WPL and WACA (as well as a whole lot more internal implementation engineering on Identity Management and other related security management tools). There is a LONG overdue release of CISF and updates due on the Security BI and Risk Tracker work we have been cranking out. The team will continue to use this blog to communicate public releases and share their work and learning's. &lt;/p&gt;  &lt;p&gt;It has been an honor and a pleasure to work with the team. It is a very talented bunch of folks who have made work fun! You can follow my new adventures at my new personal blog &lt;a href="http://www.curphey.com"&gt;http://www.curphey.com&lt;/a&gt; and as usual on Twitter using &lt;a href="http://www.twitter.com/curphey"&gt;@curphey&lt;/a&gt; (or &lt;a href="http://www.twitter.com/curphey"&gt;http://www.twitter.com/curphey&lt;/a&gt;). I will be posting some notes over on the &lt;a href="http://blogs.technet.com/BlueHat/"&gt;BlueHat blog&lt;/a&gt; about my talk in Beunos Aires next week and have one final security keynote “&lt;a href="http://conference.hackinthebox.org/hitbsecconf2010ams/?page_id=24"&gt;10 Crazy Ideas That Might Actually Change the State of Information Security&lt;/a&gt;”&lt;/p&gt;  &lt;p&gt;One of the things I have been blown away by at Microsoft is the Corporate Citizenship and the culture of giving. It’s a part of our corporate culture that I think we can be very proud of. As I transition to my new role I wanted to share something personal. Before I move on I have a personal plea. Yes it’s a plea, a plea to your kind hearts and good nature. Last week I signed up to run the Seattle Rock’N’Roll Marathon with The Leukemia &amp;amp; Lymphoma Society’s (LLS) Team In Training. The run is on June 26th, 2010 and I am raising money to help fight blood cancer. I am not going for pace, I just want to finish and raise money for a good cause. I just want to do something good. For a few years I have wanted to do a marathon as one of those things to tick off of the “been there and done that in Life” list but more importantly I know a few people who have been in dealing with cancer of various forms. One friend has a 9 year old son who has been dealing with a brain and a spine tumor for most of his life (I am not going to tug on your heart strings too much but it’s a heart breaking story) and another good friend (my age)&amp;#160; is now recovering from Lupus. The chemotherapy has literally disintegrated his bones to the point where he has had to have his hips replaced so he can walk. He will never be able to run with his kids like I can. My minor skin cancer scares pale into insignificance when you see what others go through and a little bit of pain on a 26 mile run will be negligible in order to help advance the research and prevent others from suffering. I am healthy and alive; getting fit and a few blisters will be a breeze in comparison to what others go through. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://pages.teamintraining.org/wa/rnrseatl10/mcurphey"&gt;PLEASE SPONSOR ME!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Please, please consider sponsoring me and raising money to flight blood cancer. I am happy to accept sponsorship if you want to induce pain in me or help relieve if from others!&lt;/p&gt;  &lt;p&gt;My Team in Training Sponsorship page can be found &lt;a href="http://pages.teamintraining.org/wa/rnrseatl10/mcurphey"&gt;here&lt;/a&gt;.&amp;#160; If you work for Microsoft it has directions on how to ensure that Microsoft matches your donation so together we can double the donation for employees. &lt;/p&gt;  &lt;p&gt;All donations help. Anything helps! It’s for a great cause!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;As I live in a “Connected World” you can even track my run stats on the Garmin Connect site &lt;a href="http://connect.garmin.com/feed/rss/activities?feedname=Garmin%20Connect%20-%20markcurphey&amp;amp;owner=markcurphey"&gt;here&lt;/a&gt; using an RSS reader to see just how tough I am finding it!&lt;/p&gt;  &lt;p&gt;Thanks for your support!&lt;/p&gt;  &lt;p&gt;PS : I am also happy to do speaking events, write articles, consider endorsements or wear your company logo in return for donations.&amp;#160; You can write to me at mark at curphey dot com with suggestions.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9987118" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Information+Security+Tools/">Information Security Tools</category></item><item><title>The Web Protection Library – plans and processes.</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/03/24/the-web-protection-library-plans-and-processes.aspx</link><pubDate>Wed, 24 Mar 2010 22:22:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9984675</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9984675</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/03/24/the-web-protection-library-plans-and-processes.aspx#comments</comments><description>&lt;p&gt;First off let me introduce myself; my name is Barry Dorrans, I’m a recent transplant from the UK and I finally joined the Information Security tools team 6 weeks ago after the long and involved process of visa acquisition. Before joining Microsoft I was a consultant in the UK working with various companies on developer security issues, I was a Developer Security &lt;a href="http://mvp.support.microsoft.com/"&gt;MVP&lt;/a&gt; and an active member of the UK .NET technical community, running a &lt;a href="http://www.nxtgenug.net/"&gt;user group&lt;/a&gt; in Oxford and writing “Beginning ASP.NET Security” for Wrox Press.&lt;/p&gt;  &lt;p&gt;One of the things that attracted me to the role was the tools the team produces and in particular the open source status of the Web Protection Library and so it’s with great pleasure I am taking on the development of WPL, along with Frank, the new PM for WPL and Randy Evans, my co-developer and Jessika the team’s tester. As part of the process we’re going to share more with you about what we’re doing, what we’re planning and hopefully give you a chance to engage with us as we plan development sprints, gather feature requirements and fix bugs. &lt;/p&gt;  &lt;p&gt;We kicked off our first sprint on Monday 21st March, a sprint we’re describing as “fit and finish”. We’re spending a lot of time documenting the code and adding tests. We’re also addressing what has been a pain point for a lot of you – medium trust. The original AntiXSS library performed nothing but encoding and didn’t have any special requirements for hosting. When the first WPL beta was released we added HTML sanitization, which came from another team. Sanitization is rather computationally expensive and the code uses unsafe array manipulation in an effort to cut down the time it takes; however for obvious reasons a lot of shared hosters don’t allow unsafe code to run in their shared environments. With the next release of WPL we’re putting AntiXSS back into its own assembly and&amp;#160; marking it with &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute.aspx"&gt;AllowPartiallyTrusterCallers&lt;/a&gt; so you won’t have to strong name your web assemblies to use it. This does mean if you want to use the HTML sanitization functions you’ll need to add a reference to the new assembly into your project.&lt;/p&gt;  &lt;p&gt;One other change that will become obvious when we release the code is the move to VS2010. We’re doing this to provide support for ASP 4.0’s ability to switch out HTML encoding engine and we’ll be providing a pre-built class for this. In order to keep support those of you who are on .NET 2.0 - 3.5 this will be made available in yet another assembly or of course you simple take the class and add it into your own project.&lt;/p&gt;  &lt;p&gt;It’s unlikely we’ll release the results of this sprint publically as this is these are the only functional changes we’re making and we’d like to wait till we to release under we have some actual bug fixes – but if you feel we should then leave us a comment!&lt;/p&gt;  &lt;p&gt;Talking of bug fixes once this sprint has finished we’ll start going through the bug list and feature requests. In case you’re wondering bugs and features from the &lt;a href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=734&amp;amp;DownloadID=23329  "&gt;Connect programme&lt;/a&gt; make it into our internal systems automagically. We also had a lot of feedback at the MVP summit from the Developer Security MVPs which we’re planning to address. If you’ve added a bug onto the AntiXSS &lt;a href="http://antixss.codeplex.com"&gt;codeplex&lt;/a&gt; site then we manually triage those and bring them into our internal systems on a regular basis.&lt;/p&gt;  &lt;p&gt;As we near the end of this sprint Frank will be sharing with you our priorities and tasks for the next sprint and I plan to start sharing our new Threat Models as we prepare them and any mistakes we’ve made with the threat modeling process – something I hope will enable everyone to learn how to model effectively.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9984675" width="1" height="1"&gt;</description></item><item><title>Silverlight 3.0 Datagrid - How to change a cell state?</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/02/13/silverlight-3-0-datagrid-how-to-change-a-cell-state.aspx</link><pubDate>Sat, 13 Feb 2010 00:32:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9962952</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9962952</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/02/13/silverlight-3-0-datagrid-how-to-change-a-cell-state.aspx#comments</comments><description>&lt;p&gt;Hi Syam Pinnaka, Sr. SDE in Infosec tools team.&lt;/p&gt;  &lt;p&gt;Silverlight 3.0 datagrid can be used to bind to any enumerable collection and display the data in the grid. The data changes in the grid can be propagated back to the bound data using a special type in silverlight called ObservableCollection. We will discuss more about ObservableCollection in a separate post. In this post Lets see how to change a datagrid cell state based on certain condition. For example lets say there are two DataGridCheckBoxColumn columns and first check box column state will need to change to read-only based on the value of second check box column.&lt;/p&gt;  &lt;p&gt;We can accomplish this by handling datagrid events like BeginningEdit or CellEditEnded. In our example, we can use BeginningEdit to check for checkbox whether the checkbox being clicked is first one, if so check the state of second check box to allow the click or not. Example code below.&lt;/p&gt;  &lt;p&gt;#region selectUsersGrid_BeginningEdit    &lt;br /&gt;private void selectUsersGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)     &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (e.Column.DisplayIndex == 0) //First DataGridCheckBoxColumn     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; User u = e.Row.DataContext as User; //fetch the row data.     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (u.IsMember == false) //examine the second checkbox data, do not allow if its false     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; e.Cancel = true;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;}     &lt;br /&gt;#endregion&lt;/p&gt;  &lt;p&gt;The same effect can be accomplished in some other ways. For example we can use CellEditEnded instead of BeginningEdit. In CellEditEnded, check for second check box state and mark first one as read-only when required. Example code below.&lt;/p&gt;  &lt;p&gt;#region selectUsersGrid_CellEditEnded    &lt;br /&gt;private void selectUsersGrid_CellEditEnded(object sender, DataGridCellEditEndedEventArgs e)     &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (e.Column.DisplayIndex == 1) //Second check box state changed.     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; User u = e.Row.DataContext as User; //fetch the row data     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (u.IsMember == false) //This is not a member, Clear IsDeny (make first check box as read-only)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; u.IsDeny = false;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;}     &lt;br /&gt;#endregion&lt;/p&gt;  &lt;p&gt;One point to note in the above two code snippets is that, we are modifying the data (binding) to alter the cell state instead of cell itself. This becomes essential when we waned to change state that is not related to data, for example lets say background color of the cell. this can be accomplished as below.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; #region selectUsersGrid_CellEditEnded   &lt;br /&gt;private void selectUsersGrid_CellEditEnded(object sender, DataGridCellEditEndedEventArgs e)   &lt;br /&gt;{   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (e.Column.DisplayIndex == 1) //Second check box state changed.   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {   &lt;blockquote&gt;   &lt;p&gt;FrameworkElement firstCheckbox = e.Column.GetCellContent(e.Row);      &lt;br /&gt;if (firstCheckbox is CheckBox)       &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CheckBox c = firstCheckbox as CheckBox;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; c.Background = new SolidColorBrush(Colors.Red);       &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }   &lt;br /&gt;}   &lt;br /&gt;#endregion   &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is about it for now, We will talk more silverlight during coming posts. Feel free to contact me at &lt;a href="mailto:syamp@microsoft.com"&gt;syamp@microsoft.com&lt;/a&gt; if you have any questions about the above post. &lt;/p&gt;  &lt;p&gt;Happy coding! &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9962952" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/SilverLight/">SilverLight</category></item><item><title>How To: Use CAT.NET 2.0 Beta</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/02/05/how-to-use-cat-net-2-0-beta.aspx</link><pubDate>Fri, 05 Feb 2010 18:17:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9958917</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9958917</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/02/05/how-to-use-cat-net-2-0-beta.aspx#comments</comments><description>&lt;p&gt;Syed Aslam Basha here. I am a tester on the Information Security Tools Team responsible for testing CAT.NET.&lt;/p&gt;  &lt;p&gt;You can download the current Beta of CAT.NET 2.0 from &lt;a href="https://connect.microsoft.com/site734/Downloads/DownloadDetails.aspx?DownloadID=26086&amp;amp;wa=wsignin1.0"&gt;https://connect.microsoft.com/site734/Downloads/DownloadDetails.aspx?DownloadID=26086&amp;amp;wa=wsignin1.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;* You must have Visual studio 2010 Beta 2 for this tool to work. There are known issues if you have previous issues installed so please be aware.*&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;After the installation open up Visual Studio 2010 command prompt in &lt;b&gt;*Administrator*&lt;/b&gt; mode by going to Start -&amp;gt; All Programs -&amp;gt; Microsoft Visual Studio 2010 -&amp;gt; Visual Studio Tools -&amp;gt; Visual Studio 2008 Command Prompt. At the command prompt type “sn -Vr *,b03f5f7f11d50a3a” to skip strong name verification for fxcop assemblies.&lt;/p&gt;  &lt;p&gt;*Note sn this step will be fixed in a an incremental build very soon*&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NET2.0Beta_90A3/image2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb" border="0" alt="image_thumb" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NET2.0Beta_90A3/image_thumb_8b371b28-ac23-4add-9bf4-a58bdc5b5fbc.png" width="244" height="127" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can run CAT.NET as FXcop rules from FXCop GUI or FXCopcmd.exe&lt;/p&gt;  &lt;p&gt;1. Start FxCop by going to Start -&amp;gt; All Programs -&amp;gt; Microsoft Information Security -&amp;gt; Code Analysis Tool for .NET (CAT.NET) v2.0 -&amp;gt; FxCop. This will bring up the UI with CAT.NET rules loaded.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NET2.0Beta_90A3/image5.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb1" border="0" alt="image_thumb1" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NET2.0Beta_90A3/image_thumb1_17b201d7-4eae-4975-b72a-f81d43d017c9.png" width="244" height="200" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Right click “My FxCop Project” and select “Add Targets” to browse and add a target to analyze.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NET2.0Beta_90A3/image8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb2" border="0" alt="image_thumb2" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NET2.0Beta_90A3/image_thumb2_3477f111-1491-4a17-8d64-2b4e45b9df29.png" width="244" height="88" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Click on the “Rules” tab to select appropriate rules.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NET2.0Beta_90A3/image11.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb3" border="0" alt="image_thumb3" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NET2.0Beta_90A3/image_thumb3_6003bb69-b6c3-43a9-996e-e93d4651e351.png" width="244" height="52" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;br /&gt;Note: Sometimes FxCop UI does not display any results after selecting both rules. Workaround is to select configuration rules or data flow rules and alternate the selection after analysis.&lt;/p&gt;  &lt;p&gt;4. After selecting a target, click the “Analyze” button in toolbar or just press F5 to start the analysis.&lt;/p&gt;  &lt;p&gt;5. Review the results in the window on the right.&lt;/p&gt;  &lt;p&gt;6. You can also run the analysis using the FxCop command line tool. Open FxCop Command line tool by going to Start -&amp;gt; All Programs -&amp;gt; Microsoft Information Security -&amp;gt; Code Analysis Tool for .NET (CAT.NET) v2.0 -&amp;gt; FxCop Command Prompt. This will run the command line tool and display all the existing command line switches.&lt;/p&gt;  &lt;p&gt;7. You can start analysis by using /console and /file switches. /console switch displays error in the console and /file switch specifies which file to analyze. Ex: FxCopCmd.exe /console /file:&amp;quot;C:\AntiXss\Sample Application\bin\SampleApp.dll&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;a href="file:///C:/Users/mcurphey/AppData/Local/Temp/WindowsLiveWriter-1460597230/supfiles832FB9/image14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb4" border="0" alt="image_thumb4" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NET2.0Beta_90A3/image_thumb4_7aca8a4f-b6ff-459d-b2c5-d7ed02699ab3.png" width="244" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;-Syed Aslam Basha (&lt;/em&gt;&lt;a href="mailto:syedab@microsoft.com"&gt;&lt;em&gt;syedab@microsoft.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Microsoft Information Security Tools (IST) Team&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Test Lead&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9958917" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Anti_2D00_XSS/">Anti-XSS</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Information+Security+Tools/">Information Security Tools</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/CAT-NET/">CAT.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Software+Testing/">Software Testing</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category></item><item><title>How To: Use CAT.NET V2.0 Beta</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/02/05/how-to-use-cat-net-v2-0-beta.aspx</link><pubDate>Fri, 05 Feb 2010 00:24:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9958524</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9958524</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/02/05/how-to-use-cat-net-v2-0-beta.aspx#comments</comments><description>&lt;p&gt;Syed Aslam Basha here. I am a tester on the Information Security Tools Team responsible for testing CAT.NET.&lt;/p&gt;  &lt;p&gt;You can download the current Beta of CAT.NET 2.0 from &lt;a href="https://connect.microsoft.com/site734/Downloads/DownloadDetails.aspx?DownloadID=26086&amp;amp;wa=wsignin1.0"&gt;https://connect.microsoft.com/site734/Downloads/DownloadDetails.aspx?DownloadID=26086&amp;amp;wa=wsignin1.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;* You must have Visual studio 2010 Beta 2 for this tool to work. There are known issues if you have previous issues installed so please be aware.*&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;After the installation open up Visual Studio 2010 command prompt in &lt;b&gt;*Administrator*&lt;/b&gt; mode by going to Start -&amp;gt; All Programs -&amp;gt; Microsoft Visual Studio 2010 -&amp;gt; Visual Studio Tools -&amp;gt; Visual Studio 2008 Command Prompt. At the command prompt type “sn -Vr *,b03f5f7f11d50a3a” to skip strong name verification for fxcop assemblies.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_thumb.png" width="244" height="125" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can run CAT.NET as FXcop rules from FXCop GUI or FXCopcmd.exe&lt;/p&gt;  &lt;p&gt;1. Start FxCop by going to Start -&amp;gt; All Programs -&amp;gt; Microsoft Information Security -&amp;gt; Code Analysis Tool for .NET (CAT.NET) v2.0 -&amp;gt; FxCop. This will bring up the UI with CAT.NET rules loaded.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_thumb_1.png" width="244" height="199" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. Right click “My FxCop Project” and select “Add Targets” to browse and add a target to analyze.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_thumb_2.png" width="244" height="85" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. Click on the “Rules” tab to select appropriate rules.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_thumb_3.png" width="244" height="49" /&gt;&lt;/a&gt;     &lt;br /&gt;Note: Sometimes FxCop UI does not display any results after selecting both rules. Workaround is to select configuration rules or data flow rules and alternate the selection after analysis.&lt;/p&gt;  &lt;p&gt;4. After selecting a target, click the “Analyze” button in toolbar or just press F5 to start the analysis.&lt;/p&gt;  &lt;p&gt;5. Review the results in the window on the right.&lt;/p&gt;  &lt;p&gt;6. You can also run the analysis using the FxCop command line tool. Open FxCop Command line tool by going to Start -&amp;gt; All Programs -&amp;gt; Microsoft Information Security -&amp;gt; Code Analysis Tool for .NET (CAT.NET) v2.0 -&amp;gt; FxCop Command Prompt. This will run the command line tool and display all the existing command line switches.&lt;/p&gt;  &lt;p&gt;7. You can start analysis by using /console and /file switches. /console switch displays error in the console and /file switch specifies which file to analyze. Ex: FxCopCmd.exe /console /file:&amp;quot;C:\AntiXss\Sample Application\bin\SampleApp.dll&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToUseCAT.NETV2.0Beta_6D33/image_thumb_4.png" width="244" height="155" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;-Syed Aslam Basha (&lt;/em&gt;&lt;a href="mailto:syedab@microsoft.com"&gt;&lt;em&gt;syedab@microsoft.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Microsoft Information Security Tools (IST) Team&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Test Lead&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9958524" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Information+Security+Tools/">Information Security Tools</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/CAT-NET/">CAT.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Software+Testing/">Software Testing</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category></item><item><title>CAT.NET 2.0 - Beta</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/02/04/cat-net-2-0-beta.aspx</link><pubDate>Thu, 04 Feb 2010 00:42:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9957895</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9957895</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/02/04/cat-net-2-0-beta.aspx#comments</comments><description>&lt;p&gt;Mark Curphey here…&lt;/p&gt;  &lt;p&gt;Please to announce a beta of the upcoming CAT.NET 2.0. This beta program will last for approximately 1 month.&amp;#160; The final released version is scheduled to release shortly after VS 2010 RTM.&amp;#160;&amp;#160; The goal of this beta program is to garner feedback from the user community.&amp;#160;&amp;#160; Please send all feedback to &lt;a href="mailto:ist-cat@microsoft.com"&gt;ist-cat@microsoft.com&lt;/a&gt;.&amp;#160; There have been some significant changes to the code.&amp;#160; These changes include;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;User Experience &lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Integration with Visual Studio 2010 code analysis infrastructure as FxCop rules.&lt;/li&gt;    &lt;li&gt;Easy analysis using FxCop command line or UI interface or VSTS Team Build. &lt;/li&gt;    &lt;li&gt;Currently beta includes FxCop UI and Command prompt.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Core Analysis &lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Total of 55 rules have been added.&amp;#160; There are 9 data flow rules and 46 configuration rules are included in this version.&lt;/li&gt;    &lt;li&gt;Updated tainted data flow analysis engine to track both tainted operands and source symbols.&lt;/li&gt;    &lt;li&gt;Reduced false positives and false negatives.&amp;#160; &lt;/li&gt;    &lt;li&gt;Accomplished by detecting sanitizers, constant variables and instructions that affect the data flow. &lt;/li&gt;    &lt;li&gt;New Data flow rule to detect XML Injection attacks &lt;/li&gt;    &lt;li&gt;Updated configuration rules engine detecting clear text connection strings and credentials. &lt;/li&gt;    &lt;li&gt;Rules to detect insecure defaults.&amp;#160; &lt;/li&gt;    &lt;li&gt;Example minRequiredPasswordLength attribute of membership providers add element. &lt;/li&gt;    &lt;li&gt;Configuration rules updated to detect @page directive configuration overrides. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Known Issues&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;All current known issues have been included in the CAT.NET V2.0 Beta guide document.&amp;#160; The items listed in this document will be resolved prior to final release. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can download the bits at Connect (link below)&lt;/p&gt;  &lt;p&gt;&lt;a href="https://connect.microsoft.com/site734/Downloads/DownloadDetails.aspx?DownloadID=26086&amp;amp;wa=wsignin1.0"&gt;https://connect.microsoft.com/site734/Downloads/DownloadDetails.aspx?DownloadID=26086&amp;amp;wa=wsignin1.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9957895" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Information+Security+Tools/">Information Security Tools</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/CAT-NET/">CAT.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category></item><item><title>How To: View The Header of an EXE/DLL</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/01/28/how-to-view-the-header-of-an-exe-dll.aspx</link><pubDate>Thu, 28 Jan 2010 17:39:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9954809</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9954809</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/01/28/how-to-view-the-header-of-an-exe-dll.aspx#comments</comments><description>&lt;p&gt;Syed Aslam Basha here. I am a tester on the Information Security Tools Team.&lt;/p&gt;  &lt;p&gt;At times we may want to know the target platform (i.e. x86 or x64) of an EXE/DLL. Visual studio provides a corflags.exe tool to identify the target platform.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Launch visual Studio command prompt in admin mode &lt;/li&gt;    &lt;li&gt;Type CorFlags Assembly File Path and press enter &lt;/li&gt;    &lt;li&gt;Example      &lt;p&gt;C:\Windows\system32&amp;gt;corflags &amp;quot;C:\Program Files\Microsoft Information Security\Microsoft Code Analysis Tool for .NET (CAT.NET) v2.0\FxCopCmd.exe&amp;quot;        &lt;br /&gt;Microsoft (R) .NET Framework CorFlags Conversion Tool.&amp;#160; Version&amp;#160; 3.5.21022.8         &lt;br /&gt;Copyright (c) Microsoft Corporation.&amp;#160; All rights reserved. &lt;/p&gt;      &lt;p&gt;Version&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : v4.0.21008        &lt;br /&gt;CLR Header: 2.5         &lt;br /&gt;PE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : PE32         &lt;br /&gt;CorFlags&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 3         &lt;br /&gt;ILONLY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 1         &lt;br /&gt;32BIT&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 1         &lt;br /&gt;Signed&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 1&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;The PE and 32BIT flags gives details about type of the assembly;      &lt;br /&gt;Any CPU : PE = PE32 and 32BIT = 0       &lt;br /&gt;x86&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : PE = PE32 and 32BIT = 1       &lt;br /&gt;x64&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : PE = PE32+ and 32BIT = 0 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;-Syed Aslam Basha (&lt;/em&gt;&lt;a href="mailto:syedab@microsoft.com"&gt;&lt;em&gt;syedab@microsoft.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Microsoft Information Security Tools (IST) Team&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Test Lead&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9954809" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Software+Testing/">Software Testing</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>Delay Between Actions Feature in CUIT</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/01/18/delay-between-actions-feature-in-cuit.aspx</link><pubDate>Mon, 18 Jan 2010 22:12:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9950012</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9950012</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/01/18/delay-between-actions-feature-in-cuit.aspx#comments</comments><description>&lt;p&gt;Syed Aslam Basha here. I am a tester on&amp;#160; the Information Security Tools Team.&lt;/p&gt;  &lt;p&gt;The CUIT code is executed at a very fast pace, at times you may want to execute the code a bit slow or with a delay between actions. &lt;/p&gt;  &lt;p&gt;We have playback API which helps to achieve this as shown below;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Playback&lt;/span&gt;.PlaybackSettings.DelayBetweenActions = &lt;span style="color: #a31515"&gt;1000&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;The value is in milliseconds, use the above code as the first line in your CUIT methods to get a delay between actions of one milliseconds during playback.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;-Syed Aslam Basha (&lt;/em&gt;&lt;a href="mailto:syedab@microsoft.com"&gt;&lt;em&gt;syedab@microsoft.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Microsoft Information Security Tools (IST) Team&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Test Lead&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9950012" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Information+Security+Tools/">Information Security Tools</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Software+Testing/">Software Testing</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category></item><item><title>How To: Data Drive CUIT Scripts</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/01/18/how-to-data-drive-cuit-scripts.aspx</link><pubDate>Mon, 18 Jan 2010 22:11:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9950010</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9950010</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/01/18/how-to-data-drive-cuit-scripts.aspx#comments</comments><description>&lt;p&gt;Syed Aslam Basha here. I am a tester on&amp;#160; the Information Security Tools Team.&lt;/p&gt;  &lt;p&gt;One of the major feature for any automation tool is support for data driven test cases, CUIT too supports data driven testing. Let me show an example of data driving CUIT scripts.&lt;/p&gt;  &lt;p&gt;Suppose you want to validate login feature of an application with different users. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Select test menu and click on windows –&amp;gt; Test View &lt;/li&gt;    &lt;li&gt;Select the required test name say validatehomepage &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToDataDriveCUITscripts_D767/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToDataDriveCUITscripts_D767/image_thumb.png" width="244" height="138" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Click on ellipse button next to data connection string in properties window &lt;/li&gt;    &lt;li&gt;You can configure the required data source, select CSV file, click on Next &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToDataDriveCUITscripts_D767/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToDataDriveCUITscripts_D767/image_thumb_1.png" width="244" height="219" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Click on Finish &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToDataDriveCUITscripts_D767/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToDataDriveCUITscripts_D767/image_thumb_2.png" width="244" height="215" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Click on yes for “Copy the database file into the current project and add as deployment item” &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToDataDriveCUITscripts_D767/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToDataDriveCUITscripts_D767/image_thumb_3.png" width="244" height="89" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You can see data source code being added to the Validatehomepage file      &lt;p&gt;[&lt;span style="color: #2b91af"&gt;DataSource&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Microsoft.VisualStudio.TestTools.DataSource.CSV&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;|DataDirectory|\\UserNames.csv&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;UserNames#csv&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;DataAccessMethod&lt;/span&gt;.Sequential), &lt;span style="color: #2b91af"&gt;DeploymentItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;PortalAutomation\\UserNames.csv&amp;quot;&lt;/span&gt;), &lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p&gt;&lt;span style="color: blue"&gt;public void &lt;/span&gt;ValidateHomePage()&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;Data source is added to the project, now assign the values from data source to parameters of CUIT &lt;/li&gt;    &lt;li&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.UIMap.LoginAdminParams.UsernameEditText = testContextInstance.DataRow[&lt;span style="color: brown"&gt;0&lt;/span&gt;].ToString(); &lt;/li&gt;    &lt;li&gt;Run the tests, it runs for two iterations and shows the results &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Likewise you can data drive any of the test cases, if you think out of the box you can apply the concept to validate all links present in web page.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;-Syed Aslam Basha (&lt;/em&gt;&lt;a href="mailto:syedab@microsoft.com"&gt;&lt;em&gt;syedab@microsoft.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Microsoft Information Security Tools (IST) Team&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Test Lead&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9950010" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Information+Security+Tools/">Information Security Tools</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Software+Testing/">Software Testing</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category></item><item><title>How To: Customize CUIT scripts</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/01/18/how-to-customize-cuit-scripts.aspx</link><pubDate>Mon, 18 Jan 2010 22:08:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9950008</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9950008</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/01/18/how-to-customize-cuit-scripts.aspx#comments</comments><description>&lt;p&gt;Syed Aslam Basha here. I am a tester on&amp;#160; the Information Security Tools Team.&lt;/p&gt;  &lt;p&gt;In the previous blog posts I have shown how to automate functional test cases using CUIT and adding check points/ assertions to CUITs. Lets see with an example “how to customize the CUIT scripts”.&lt;/p&gt;  &lt;p&gt;Lets take a close look at the files that are generated after recording;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;codedUITest1.cs file which has the method calls which we have recorded &lt;/li&gt;    &lt;li&gt;UIMap.cs at this stage it has nothing much than empty UIMap class which we will modify in the due course &lt;/li&gt;    &lt;li&gt;UIMap.Designer.cs contains code generated by CUIT builder &lt;/li&gt;    &lt;li&gt;UserControls.cs contains definitions of specialized classes used in CUIT&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToCustomizeCUITscripts_ADA0/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToCustomizeCUITscripts_ADA0/image_thumb.png" width="201" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;UIMap.Designer.cs and UIMap.cs contains partial UIMap class. The designer file contains auto-generated code. As with any of the designer file, the modifications done to it would be lost if the code is regenerated. &lt;/li&gt; &lt;/ul&gt;  &lt;pre class="code"&gt;&lt;span style="color: green"&gt;// ------------------------------------------------------------------------------
//  &amp;lt;auto-generated&amp;gt;
//      This code was generated by coded UI test builder.
//      Version: 10.0.0.0
//
//      Changes to this file may cause incorrect behavior and will be lost if
//      the code is regenerated.
//  &amp;lt;/auto-generated&amp;gt;
// ------------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Suppose &lt;span style="color: green"&gt;&lt;font color="#000000"&gt;we have recorded sanity test cases and like to use to test production site. All you need is to modify the UIMap.cs file as shown below. Here we are updating the launch portal site params variable BlankPageWindowsInteWindowUrl to &lt;a href="https://productionSite"&gt;https://productionSite&lt;/a&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; UIMap&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ProductionValues()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.LaunchPortalSiteParams.BlankPageWindowsInteWindowUrl = &lt;span style="color: #006080"&gt;&amp;quot;https://productionSite&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;span style="color: green"&gt;&lt;font color="#000000"&gt;Call this function from CUIT before any other function is called as;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CodedUITest1()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;             &lt;span style="color: #008000"&gt;// To generate code for this test, select &amp;quot;Generate Code for Coded UI Test&amp;quot; from the shortcut menu and select one of the menu items.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.UIMap.ProductionValues();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.UIMap.LaunchPortalSite();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.UIMap.ValidateHomePageLinks();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.UIMap.ClosePortalSite();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;span style="color: green"&gt;&lt;font color="#000000"&gt;Now you are good to test production site, likewise you can set values to any of the variables defined in UIMap.Designer.cs.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;-Syed Aslam Basha (&lt;/em&gt;&lt;a href="mailto:syedab@microsoft.com"&gt;&lt;em&gt;syedab@microsoft.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Microsoft Information Security Tools (IST) Team&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Test Lead&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9950008" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Information+Security+Tools/">Information Security Tools</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Software+Testing/">Software Testing</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category></item><item><title>How Do I: Configure Runtime Version</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/01/15/how-do-i-configure-runtime-version.aspx</link><pubDate>Fri, 15 Jan 2010 23:09:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9949217</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9949217</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/01/15/how-do-i-configure-runtime-version.aspx#comments</comments><description>&lt;p&gt;Syed Aslam Basha here. I am a tester on&amp;#160; the Information Security Tools Team.&lt;/p&gt;  &lt;p&gt;At times I need to test an application with different versions of the .NET framework. You can configure the application config file to force the application to use the .NET version specified in the config file. &lt;/p&gt;  &lt;p&gt;For example, suppose we have application built with .NET 3.5 and want to check the compatibility with .NET 4.0 follow the below steps;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open applicationname.exe.config file which will be under application path &lt;/li&gt;    &lt;li&gt;If its not present create a one &lt;/li&gt;    &lt;li&gt;Add&amp;#160; the following xml node &lt;/li&gt; &lt;/ul&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;startup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;supportedRuntime&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;v4.0.21006&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;startup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Save the file &lt;/li&gt;

  &lt;li&gt;Now run the application, it runs on .NET 4.0 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;-Syed Aslam Basha (&lt;/em&gt;&lt;a href="mailto:syedab@microsoft.com"&gt;&lt;em&gt;syedab@microsoft.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Microsoft Information Security Tools (IST) Team&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Test Lead&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9949217" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Software+Testing/">Software Testing</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category></item><item><title>How To: Add Assertions in Coded UI Tests</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/01/15/how-to-add-assertions-in-coded-ui-tests.aspx</link><pubDate>Fri, 15 Jan 2010 23:08:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9949216</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9949216</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/01/15/how-to-add-assertions-in-coded-ui-tests.aspx#comments</comments><description>&lt;p&gt;Syed Aslam Basha here. I am a tester on&amp;#160; the Information Security Tools Team.&lt;/p&gt;  &lt;p&gt;As continuation to my previous post, I want to show how to add assertions to coded UI test scripts. An example maybe that after launching a portal site you want to validate the user name. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Press enter after this.UIMap.LaunchPortalSite(); (continuation from the previous blog post) , right click and select first option “use coded UI test builder” &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_thumb_1.png" width="244" height="155" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Click on the cross hair (third button) and drag and drop on the control you want to validate &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/blogfiles/syedab/WindowsLiveWriter/c782b270328d_9C43/image_8.png" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_thumb_2.png" width="57" height="31" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add assertions form will be shown, you can navigate through the controls and reach the top most control or form and see its properties. You can add assertion to any of the properties shown. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_thumb_3.png" width="244" height="229" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Right click on the inner text which we are interested in and click on add assertion &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_thumb_5.png" width="244" height="243" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Select comparator and comparison value and click on Ok &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/HowToAddassertionsinCodedUITests_E6B9/image_thumb_6.png" width="244" height="153" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Click on generate code button. Enter appropriate method name say ValidateUser and you are ready to validate the user name. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;-Syed Aslam Basha (&lt;/em&gt;&lt;a href="mailto:syedab@microsoft.com"&gt;&lt;em&gt;syedab@microsoft.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Microsoft Information Security Tools (IST) Team&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Test Lead&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9949216" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Software+Testing/">Software Testing</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>How To: Functional Testing Automation Using Visual Studio 2010</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/01/14/how-to-functional-testing-automation-using-visual-studio-2010.aspx</link><pubDate>Thu, 14 Jan 2010 18:04:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9948520</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9948520</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/01/14/how-to-functional-testing-automation-using-visual-studio-2010.aspx#comments</comments><description>&lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Syed Aslam Basha here. I am a tester on&amp;#160; the Information Security Tools Team. I want to share my first hand experience of automating functional test cases using coded UI Test, a feature in visual studio (VS) 2010 in my next coupple of blog posts. &lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;In this blog post I will show an example of recording a scenario where I;&lt;/p&gt;  &lt;ul  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;   &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;launch a web browser &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;open the portal site &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Navigate within the portal site &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Close the browser &lt;/li&gt; &lt;/ul&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;and then of course play it all back using VS 2010. Here goes;&lt;/p&gt;  &lt;ul  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;   &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Launch VS 2010 &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Select File –&amp;gt; New Project &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Select Visual C#, Test and Test project, give appropriate project name as shown below and click on ok &lt;/li&gt; &lt;/ul&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/c782b270328d_9C43/image_2.png" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/c782b270328d_9C43/image_thumb.png" width="244" height="169" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;   &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;This will create my portal automation project along with default cs files &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Right click on portal automation project name and select add coded UI Test &lt;/li&gt; &lt;/ul&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/c782b270328d_9C43/image_4.png" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/c782b270328d_9C43/image_thumb_1.png" width="244" height="177" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;ul  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;   &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;It will launch Generate code for coded UI test select the first option and click on ok &lt;/li&gt; &lt;/ul&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/c782b270328d_9C43/image_6.png" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/c782b270328d_9C43/image_thumb_2.png" width="244" height="155" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;   &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;A small form called coded UI test builder is shown at the right hand bottom corner of your screen. Now you can record actions, add assertion (we will discuss in upcoming blog posts) and generate code &lt;/li&gt; &lt;/ul&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/c782b270328d_9C43/image_8.png" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/c782b270328d_9C43/image_thumb_3.png" width="227" height="62" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;   &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Click on start recording button in the coded UI Test Builder, launch browser. &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Type in the site name and press enter &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Click on pause recording in Coded UI test Builder. You can view the steps recorded and edit by clicking on show recorded steps button in coded UI test builder &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Click on Generate code, enter method name as “LaunchSite”. Its always a good practice to have modular reusable steps (we can record all steps till the end of the test case, but we will divide test steps into modular reusable components to increase reusability) You can call this function wherever required. &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Click on start recording and record actions. Click on links in home page. &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Click on pause recording in coded UI test builder. Click on Generate Code, enter appropriate method name. &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Click on start recording and close the browser &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Click on pause recording in coded UI test builder. Click on Generate Code, enter appropriate method name. &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Lets see the code generated. You can see      &lt;pre class="code" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;span style="color: blue" __vsttTracked="1"&gt;public void &lt;/span&gt;CodedUITest1()
        {

            &lt;span style="color: green" __vsttTracked="1"&gt;// To generate code for this test, select &amp;quot;Generate Code for Coded UI Test&amp;quot; from the shortcut menu and select one of the menu items.
            &lt;/span&gt;&lt;span style="color: blue" __vsttTracked="1"&gt;this&lt;/span&gt;.UIMap.LaunchPortalSite();
            &lt;span style="color: blue" __vsttTracked="1"&gt;this&lt;/span&gt;.UIMap.ValidateHomePageLinks();
            &lt;span style="color: blue" __vsttTracked="1"&gt;this&lt;/span&gt;.UIMap.ClosePortalSite();
        }&lt;/pre&gt;
    &lt;a href="http://11011.net/software/vspaste" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;/a&gt;&lt;/li&gt;

  &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;
    &lt;div  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Rename codedUITest1 to ValdiateHomePageLinks, to make it more meaningful and easy to understand. From your code you can clearly make out you are launching portal site, validating homepage links and closing thte site. &lt;/div&gt;
  &lt;/li&gt;

  &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;
    &lt;div  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Press F5 or right click above LaunchPortalSite method and select run tests to run/ playback.&lt;/div&gt;
  &lt;/li&gt;

  &lt;li  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;
    &lt;div  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;You will see the output in test results as passed or failed.&lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;em  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;-Syed Aslam Basha (&lt;/em&gt;&lt;a href="mailto:syedab@microsoft.com" __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;em  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;syedab@microsoft.com&lt;/em&gt;&lt;/a&gt;&lt;em  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;em  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Microsoft Information Security Tools (IST) Team&lt;/em&gt;&lt;/p&gt;

&lt;p  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;em  __vsttTracked="1" insertadjacenthtml="function(loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Test Lead&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9948520" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Software+Testing/">Software Testing</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category></item><item><title>One Story At A Time</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/01/06/one-story-at-a-time.aspx</link><pubDate>Wed, 06 Jan 2010 05:09:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9944368</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9944368</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/01/06/one-story-at-a-time.aspx#comments</comments><description>&lt;p&gt;Hey everyone, this is Marius Grigoriu, PM leading the Risk Tracker and Security BI projects and portal and notifications components. One of the challenges we encountered on our path to Agility was that our testers were getting squeezed at the end of each sprint. What I heard from our testers was that we could simply not perform all the desired testing and fixes in the last week or a four week sprint. This was a sign that we were doing something incorrectly. I started digging into the problem and asking questions. What I was told was that we couldn’t drop to test earlier in the cycle because code was still in progress or undergoing unit testing by the authors. I looked at our task list and found that all of our stories for the sprint were started, but none were fully completed (for us that means tested). This was actually a frightening discovery. We ran the risk of having nothing ready for our sprint demo if any last second issues were to appear! &lt;/p&gt;  &lt;p&gt;As we planned the next sprint, I convinced my teams to try something different. What we did was fully plan and assign tasks for a story before moving onto the next. Rather than having only one developer per story, we applied the entire team to each story. If our schedule were to slip or something else go wrong, chances are that we would still have at least one story ready for demo. Planning our sprint this way showed us that we also had some bottlenecks in test. Although we do have automation in our regression suite, we found that our drop and deployment procedures were taking too long. Now that we were dropping and deploying several times per sprint, and often a few times per day this source of pain became obvious. &lt;/p&gt;  &lt;p&gt;Our next step in continuous improvement will be to automate our deployments to test environments. I can see where this is heading, but don’t tell my team this. My guess is that next we will want to start connecting our builds jobs and automated tests on either end of the deployment automation to get a daily automated test report. And as pressure grows for frequent rollout to production and installation errors due to manual deployments, I could see us eventually making an effort automate ourselves all the way to production.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9944368" width="1" height="1"&gt;</description></item><item><title>WCF Authorization with Custom Principal</title><link>http://blogs.msdn.com/b/securitytools/archive/2010/01/04/wcf-authorization-with-custom-principal.aspx</link><pubDate>Mon, 04 Jan 2010 20:39:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9943567</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9943567</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2010/01/04/wcf-authorization-with-custom-principal.aspx#comments</comments><description>&lt;p&gt;Hi, I am Syam Pinnaka, Sr. SDE in InfoSec tools team. &lt;/p&gt;  &lt;p&gt;In AuthZ component of CISF, we have a requirement to perform authorization checks in a WCF service. Since CISF AuthZ module has a custom implementation of IPrincipal called as CISFPrincipal, Its looks little tricky to use the CISFPincipal in a WCF client. but WCF makes it easy with IAuthorizationPolicy interface as explained below.&lt;/p&gt;  &lt;p&gt;In order to integrate a custom Principal with WCF, we need to set the “PrincipalPermissionMode” property to “Custom”. In addition, we also need to set the authorization policy that will be used to create the custom principal objet and supply it to WCF plumbing.&lt;/p&gt;  &lt;p&gt;Here is a sample implementation.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Authorization Policy:&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: true; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;    public class CISFAuthorizationPolicy: IAuthorizationPolicy
    {
        // this method gets called after the authentication stage
        public bool Evaluate(EvaluationContext evaluationContext, ref object state)
        {            
                // Get the authenticated client identity
                IIdentity client = GetClientIdentity(evaluationContext);
                
                Microsoft.InformationSecurity.CISF.Security.AuthZServices.AuthZService auth = new AuthZService();
                User singleuser = auth.GetUserInformation(client.Name, ConfigurationManager.AppSettings[&amp;quot;ApplicationName&amp;quot;]);

                // Set the custom principal
                evaluationContext.Properties[&amp;quot;Principal&amp;quot;] = new CISF.Security.Principal.CISFPrincipal(client, singleuser);                            
                return true;
        }
     }&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Configuration:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: true; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;&amp;lt;behaviors&amp;gt;
    &amp;lt;serviceBehaviors&amp;gt;
    &amp;lt;behavior name='CISFCustomBehavior'&amp;gt;       
      &amp;lt;serviceAuthorization principalPermissionMode='Custom'&amp;gt;
        &amp;lt;authorizationPolicies&amp;gt;
          &amp;lt;add policyType='Service.CISFAuthorizationPolicy, Service' /&amp;gt;
        &amp;lt;/authorizationPolicies&amp;gt;
      &amp;lt;/serviceAuthorization&amp;gt;
    &amp;lt;/behavior&amp;gt;
  &amp;lt;/serviceBehaviors&amp;gt;
&amp;lt;/behaviors&amp;gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Once the custom Principal is set in evalutationContext, regular authorization checks can be carried out based on custom principal. If custom principal implements Roles, PrincipalPermission.Demand can be used for imperative security check. &lt;/p&gt;

&lt;p&gt;Alternatively, ServiceAuthorizationManager can be used to centralize the authorization logic instead of spreading the authorization logic all over the WCF service code. We can override the “CheckAccess” method to carry out our custom authorization check. One shortcoming of this method would be to modify this logic as new methods are added to or removed from the WCF service.&lt;/p&gt;

&lt;p&gt;Feel free to contact me at &lt;a href="mailto:syamp@microsoft.com"&gt;syamp@microsoft.com&lt;/a&gt; if you need more details about any of the above approaches.&lt;/p&gt;

&lt;p&gt;Happy coding and Happy New year, 2010!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9943567" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/CISF/">CISF</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Secure+Coding/">Secure Coding</category></item><item><title>What’s happening with CAT.NET 2.0?</title><link>http://blogs.msdn.com/b/securitytools/archive/2009/12/30/what-s-happening-with-cat-net-2-0.aspx</link><pubDate>Wed, 30 Dec 2009 17:23:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9942337</guid><dc:creator>cisg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/securitytools/rsscomments.aspx?WeblogPostID=9942337</wfw:commentRss><comments>http://blogs.msdn.com/b/securitytools/archive/2009/12/30/what-s-happening-with-cat-net-2-0.aspx#comments</comments><description>&lt;p&gt;RV here...&lt;/p&gt;  &lt;p&gt;Our pre alpha release included a command line tool showcasing newer version of CAT.NET based on tainted data flow analysis engine using Phoenix compiler infrastructure. It also included a configuration analysis engine which was capable of identifying insecure configuration in .config files. We are actively working on the potential beta release of CAT.NET tool focusing mainly on the core analysis and user experience areas. Here is a quick update on changes.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;User Experience      &lt;ul&gt;       &lt;li&gt;Integration with Visual Studio 2010 code analysis infrastructure as FxCop rules &lt;/li&gt;        &lt;li&gt;Easy analysis using FxCop command line or UI interface or VSTS Team Build. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Core Analysis      &lt;ul&gt;       &lt;li&gt;Updated tainted data flow analysis engine to track both tainted operands and source symbols &lt;/li&gt;        &lt;li&gt;Lesser false positives and false negatives by detecting sanitizers and constant variables and instructions that affect the data flow. &lt;/li&gt;        &lt;li&gt;New Data flow rule to detect XML Injection attacks &lt;/li&gt;        &lt;li&gt;Updated configuration rules engine to detect clear text connection strings and credentials &lt;/li&gt;        &lt;li&gt;Updated rules to detect insecure defaults, for example minRequiredPasswordLength attribute of membership providers add element. &lt;/li&gt;        &lt;li&gt;Configuration rules updated to detect @page directive configuration overrides. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here is a list of FxCop CAT.NET data flow rules.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/WhatshappeningwithCAT.NET2.0_995E/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/WhatshappeningwithCAT.NET2.0_995E/image_thumb_1.png" width="475" height="152" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here is a list of FxCop CAT.NET configuration rules.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/WhatshappeningwithCAT.NET2.0_995E/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/securitytools/WindowsLiveWriter/WhatshappeningwithCAT.NET2.0_995E/image_thumb.png" width="475" height="659" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;With tighter integration with visual studio code analysis the changes are going to make it much more easier to use CAT.NET analysis to detect application level security issues.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Happy New Year!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9942337" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/CAT-NET/">CAT.NET</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/securitytools/archive/tags/Secure+Coding/">Secure Coding</category></item></channel></rss>