Welcome to MSDN Blogs Sign in | Join | Help

Supporting Web Standards Development with SuperPreview

This post is a guest post from Steve Guttman, of the Expression Web team.  Expression Web has created an interesting tool, SuperPreview, which we thought the IE blog audience would be interested in. 

Internet Explorer 8 is an important release because it reconfirms Microsoft’s  commitment to interoperability and renewed emphasis on Web Standards. My team—which develops the authoring tool, Expression Web—is also pretty emphatic about Web Standards. We’re in the process of doing significant tooling (and retooling) so we can support existing and emerging specifications, reliably.  

The Expression Web team recently shipped SuperPreview for Internet Explorer, a FREE tool for performing cross-browser debugging across Internet Explorer, including versions 6, 7, and 8.  This tool also helps developers and site owners in migrating their sites from earlier versions of Internet Explorer  to the standards-compliant Internet Explorer 8. This is a subset of the full version of SuperPreview (which also supports Firefox) and which ships with Expression Web 3. You can download it here.  You can learn more about SuperPreview for Internet Explorer on the Expression Web team blog.

screenshot of Expression Web SuperPreview

Thanks,
Steve Guttman
Product Unit Manager
Expression Web

Posted by ieblog | 71 Comments

Guidelines for add-on developers

It’s well understood that the typical computer users today spend much of their time in their web browser, making it the most important software on their computer.  Users expect their browsers to be easy to use, fast, stable and secure.

Over the past few months, users have downloaded thousands of great browser add-ons from www.ieaddons.com and other web sites.  Users want to use browser add-ons to enhance their browsing experience, not hinder it or make it more confusing.   

We have published a full list of guidelines to help add-on developers create quality add-ons.  We created these guidelines to respond to demand from the developer community and to help share the thinking of the IE team, gathered from years of providing support to users and developers.   We strongly recommend that developers follow these guidelines when developing add-ons for IE users.  We occasionally come across add-ons that violate these guidelines so egregiously that we treat them as malware; on the other hand, we frequently see really helpful and creative add-ons that put the “user in control” and enhance the browsing experience.  Here are the core aspects of our guidelines:

Do not limit the user’s ability to access Internet Explorer features

Users require access to the entire set of Internet Explorer features, including but not limited to: the address bar, search box and new tab page to navigate and search the Internet easily and safely.  Users expect these features to be available to them at all times and our support data shows that users are confused and unhappy when these features are obscured or changed.  Please don’t write add-ons that hide, obscure or limit access to Internet Explorer features. 

Do not limit the user’s ability to control Internet Explorer settings

It’s important that users be able to control their browsing experience.  We’ve provided many configuration options for IE users to help them set up their browser exactly how they want it and protect themselves from potentially harmful malware. (See previous my previous post on toolbars and search defaults)

To support this guideline, add-on software should not remove or limit the user’s ability to view and modify IE settings.

Only use supported APIs

Add-ons should only use supported Internet Explorer and Windows application programming interfaces (APIs), detailed on MSDN. Using an unsupported method of extending Internet Explorer or relying on implementation details in a specific version of IE may cause browser stability problems when Internet Explorer is updated.  Also, when two add-ons try to use the same unsupported method of extending Internet Explorer they might crash the browser – our APIs are specifically designed to prevent this kind of problem.

Microsoft is committed to working with all add-on software developers to ensure that our mutual customers – you, the user – have a great experience when using Internet Explorer with add-ons. If you are developing or maintaining an Internet Explorer add-on, please review our guidelines and ensure that your add-ons deliver a good long-term experience for users.

Thank you,
Frank Olivier and Herman Ng
Internet Explorer Program Management

Posted by ieblog | 24 Comments

Preventing Operation Aborted Scenarios

This post follows up on my original Operation Aborted post to provide some additional information and assistance for web site owners or 3rd party script libraries.

operation aborted dialog box

Recap

Nearly a year-and-a-half ago, I blogged about an error that can occur on some websites that generate content via script. This content can cause Internet Explorer’s HTML parser to get into an unrecoverable state, which makes it doubly-hard to find and diagnose why this error is happening. When this state occurs, the HTML parser cannot continue, and simply throws up its hands and admits: “Operation aborted!”

Early in IE8’s development, we put in a mitigation that alleviated the worst side-effects of this problem. Rather than show a modal dialog and then navigate away from the page after you press OK, instead we removed the dialog and transferred the error notification into the status bar (to the script error notification area). As a result, you are not interrupted by a dialog and you can continue to view the current web page. You may not have even noticed that this error occurred; yet the HTML parser does come to a grinding halt (for that tab only) and any additional content will never be processed.

Not too long after IE8 was released, we began hearing reports of IE8 customers continuing to see the old operation aborted dialog! While we knew that we hadn’t fixed every possible scenario that could cause the dialog to appear (it’s triggered as a catch-all for many subsystems such as the navigation stack and networking), we believed that we had mitigated the worst-cases. With recent reports of users seeing the Operation Aborted dialog in IE8 we investigated further to find any additional scenarios that could be triggering the dialog to appear (rather than the script error mitigation).

In the following two scenarios, the root cause of the Operation Aborted issue is the same (for details, please read my previous post), but the way in which it happens in these scenarios causes IE to bypass the mitigation that we put in place for IE8.

Scenario 1: Nested Parsing after Operation Aborted

<html>
 <body>
  <div>
   <script type="text/javascript">
    document.body.appendChild(document.createElement('div'));
    document.write("Testing");
   </script>
  </div>
 </body>
</html>

In the HTML above, the effect of the first line of the script is to trigger the Operation Aborted problem. In IE8 this is mitigated as previously mentioned. However, if sometime later a document.write API call is issued as shown in the second line of script, all versions of Internet Explorer, including 8, will present you with the old operation aborted dialog.

Scenario 2: Operation Aborted in error handlers

<html>
 <body>
  <script type="text/javascript">
   window.onerror = function() {
    var el = document.getElementById("div2");
    el.appendChild(document.createElement("div"));
   }
  </script>
  <div id="div1"></div>
  <div id="div2" onclick="alert('hi';"></div>
 </body>
</html>

In this HTML file, a script error (in the onclick event handler) has a run-time error, which causes the window object's onerror handler to be invoked. In this scenario, if Operation Aborted is triggered in the error handler, the dialog will also show in IE8.

Programmatically Detecting Operation Aborted

When this error dialog occurs, it is very hard for web developers to find the problem and fix it. Often (and in most cases we’ve seen) the problem is introduced in third-party scripts that are referenced by the affected page. To help web developers quickly find and fix the problem, we’ve written a little script that should help.

This script must be run as the first script in the page that is experiencing the Operation Aborted error. It overrides the usage of innerHTML and appendChild by first checking the parsing frontier before allowing the action. AppendChild is by far the most common DOM entry point that can trigger Operation Aborted, followed by innerHTML. The script may flag false positives, but we wanted to err on the side of being overly cautious.

This script relies on a feature enabled in IE8 standards mode only—Mutable DOM Prototypes. Thus, it will only work for pages that use IE's most standards-compliant mode. See this post on compatibility view for more details on the mode that IE is interpreting your page in. However, the operation aborted problems that this script identifies (in IE8 standards mode) also apply to IE7 and IE6 thereby helping you diagnose and fix this issue in any version of IE.

To use the following script follow these steps:

  1. Add a script element to the head of the page in question. This script element should be before any other script element on the page.
  2. Place the following script text within that script element (or reference a file containing it from the src attribute)
  3. Set the "f1" and "f2" feature values
    1. Setting "f1" to true will skip DOM calls that could potentially cause the Operation Aborted error. However, this will also result in a change in program flow, and other script errors could result.
    2. Setting "f2" to true stops program flow at the point of a potential Operation Aborted error and breaks into the debugger (external or built-in JavaScript debugger). This is where you can analyze each occurrence to see what assumptions were being made and how the program flow can be altered to prevent the problem.
  4. In IE, navigate to the page in question.
  5. Start the JavaScript debugger by pressing "F12" and then selecting the "Script" tab in the Developer Tools, and press the button "Start Debugging".
(function() {
    // Feature switches
    // WARNING: 'true' may cause alternate program flow.
    var f1 = PREVENT_POTENTIAL_OCCURANCES = false;          
    var f2 = BREAK_INTO_DEBUGGER_AT_POTENTIAL_OCCURANCES = true;
    if (!window.console) {
        window.console = {};
        window.console.warn = function() { };
    }
    var frontierCheck = function(host) {
        // Is host on the frontier?
        while (host && (host != document.documentElement)) {
            if (host.parentNode && (host.parentNode.lastChild != host))
            // This is not on the frontier
                return true;
            host = host.parentNode;
        }
        if (!host || (host != document.documentElement))
            return true; // This node is not on the primary tree
        // This check is overly cautious, as appends to 
        // the parent of the running script element are 
        // OK, but the asynchronous case means that the 
        // append could be happening anywhere and intrinsice
        // knowledge of the hosting application is required
        console.warn("Potential case of operation aborted");
        if (f2)
            debugger;
        // Step up two levels in the call stack 
        // to see the problem source!!
        if (f1)
            return false;
        else
            return true;
    }
    var nativeAC = Element.prototype.appendChild;
    Element.prototype.appendChild = function() {
        // call looks like this:
        //    object.appendChild(object)
        // Go back one more level in the call stack!!
        if (frontierCheck(this))
            return nativeAC.apply(this, arguments);
    }
    var nativeIH = Object.getOwnPropertyDescriptor(Element.prototype, "innerHTML").set;
    Object.defineProperty(Element.prototype, "innerHTML", { set: function() {
        if (frontierCheck(this))
            nativeIH.apply(this, arguments);
    }
    });
})();

We recognize that the operation aborted dialog and its mitigated cousin in IE8 are still the source of significant web developer pain. We hope this information and prevention script help you to diagnose and fix issues related to Operation Aborted in IE8 (and older versions of IE).

-Travis Leithead
Program Manager

Posted by ieblog | 35 Comments

Internet Explorer 8 is now available via Windows Server Update Services (WSUS)

If you manage your organization’s PCs using Windows Server Update Services (WSUS) I’m pleased to announce that we have made Internet Explorer 8 available via this technology for the following languages and platforms:

Internet Explorer 8 releases on WSUS for August 25, 2009

Windows Vista

All supported languages

Windows Server 2008

All supported languages

Windows Server 2003

All supported languages

Windows XP

English; Arabic; Chinese (Traditional); Chinese (Simplified); Czech; Danish; Dutch; Finnish; French; German; Greek; Hebrew; Hungarian; Italian; Japanese; Korean; Norwegian; Polish; Portuguese (Portugal); Portuguese (Brazil); Russian; Spanish; Swedish; Turkish

Windows Vista and Windows Server 2008

Internet Explorer 8 Language Packs

On September 22, 2009 all supported languages will be available via WSUS, with the release of the following versions of Internet Explorer 8 for Windows XP:

Internet Explorer 8 releases on WSUS for September 22, 2009

Windows XP

Bosnian (Cyrillic); Bosnian (Latin); Bulgarian; Catalan; Croatian; Estonian; Hindi; Latvian; Lithuanian; Macedonian; Romanian; Serbian (Cyrillic); Serbian (Latin); Slovenian; Slovakian; Thai; Ukranian; Vietnamese; Albanian; Assamese; Basque; Bengali (Bangladesh); Bengali (India); Gujarati; Indonesian; Kannada; Kazakh; Konkani; Malay (Malaysia); Malayalam; Marathi; Punjabi; Tamil; Telugu


How do I control my Internet Explorer 8 deployment?

Internet Explorer 8 is available in the “Update rollup” category, and will appear in your WSUS administration console as follows:

WSUS administration console

Note that even if Auto-Approve for the “Update Rollup” category is on, Internet Explorer 8 will not automatically be deployed- you must approve the Internet Explorer 8 License Terms before Internet Explorer 8 is deployed to your downstream clients.  As the Internet Explorer 8 License Terms are shared between all  Internet Explorer 8 WSUS items, once you accept the license terms for any of the items, the remaining items may be approved without accepting them.

WSUS console displaying the IE8 EULA

What other Internet Explorer 8 updates will be available via WSUS?

Today we have also released the standalone Language Packs for Windows Vista and Windows Server 2008 to WSUS under the “Update” category.  Also, cumulative security updates for Internet Explorer 8 and Internet Explorer 8 Compatibility View List updates will be made available via WSUS as they are released.

Where can I find more Internet Explorer 8 deployment information?

Visit the Internet Explorer TechNet Center – among other useful resources you’ll find an Internet Explorer Deployment Guide and information about the Internet Explorer Administration Kit which explains how to generate a MSI installer and distribute it using Systems Management Server or Group Policy.

Eric Hebenstreit
Lead Program Manager

Update 8/26: changing references to EULA to License Terms.

Posted by ieblog | 33 Comments
Filed under: ,

Real-World Protection With IE8’s SmartScreen Filter™

Back in March, I posted a note to the IEBlog when the pre-release version of IE8’s SmartScreen Filter had delivered its 10 millionth malware block. Today, I’m happy to report that IE8’s SmartScreen Filter has delivered more than 70 million blocks in the first four months since IE8’s official release, for a cumulative total of 80 million blocks. This data is a strong indication of the value of the protection SmartScreen provides, and of just how widespread socially-engineered malware attacks are on the web today.

While we were proud of the work that went into SmartScreen leading up to IE8’s release, we knew that it was only the beginning of our efforts. Microsoft’s commitment to Trustworthy Browsing didn’t end when we signed off on the final IE8 code-- the reputation services behind SmartScreen represent an ongoing investment that we strive to improve every day.  

Eighty million blocks is an incredible number of attacks thwarted-- each malicious download blocked helps prevent compromise of that user’s computer.  The other key numbers that I announced in March are holding strong, even with a rapidly expanding user base:

  • IE8 is delivering a malware block for approximately 1 out of 40 users every week
  • Approximately 1 of every 200 downloads is blocked as malicious

If you’re not running IE8’s SmartScreen Filter, I believe you are missing a key piece of protection to help ensure your safety on the Internet. IE8 users can ensure that SmartScreen is enabled by clicking on the toolbar's Safety button (or Safety button on the IE command bar if you're in Show Only Icons mode) and examining the SmartScreen Filter submenu. If a “Turn on SmartScreen Filter” item is present, click it to enable protection.

Malware Block Effectiveness

Heading into the launch of IE8, the engineering team commissioned an independent study of SmartScreen Filter by NSS Labs.  Our objective was to gather an accurate and independent baseline measurement of SmartScreen’s protection against socially engineered malware attacks.  That baseline, run against the IE8 Release Candidate, allows us to validate our investments in improved intelligence and technology. Since then, we’ve made major investments in malware intelligence and rapid response systems to provide an ever-increasing level of protection for users.

NSS Labs has just completed a second round of studies on socially engineered malware attacks, and I’m happy to share the results. In this latest test pass, NSS found a 12% improvement in SmartScreen’s protection levels. Here’s the data from NSS Labs on the malware block rate for major browsers:

Table, Mean Block Rate: Socially Engineered Malware

Microsoft’s reputation services team has other significant investments staged to launch in the next quarter, so I expect even better results in the near future.

Phishing Block Effectiveness

We’ve spent quite a bit of time talking about the socially engineered malware threat because it is currently the biggest problem users face.  However, phishing remains a prevalent and important threat to users as well.  We’re continuously making improvements to our data sources and intelligence systems that deliver phishing protection.  This continuous investment keeps IE in the market-leading position it established with the release of the Phishing Filter in IE7. Since then, Internet Explorer 7 and 8 have blocked over 125 million phishing attacks.

The newest NSS study included a test pass for phishing blocks. NSS Labs reported the following block rate for major browsers:

Table, Mean Block Rate for Phishing

You can view the full NSS study at http://nsslabs.com/browser-security.

I hope that the internal data I’ve shared today and the results of the NSS testing are a clear indicator of our commitment to Trustworthy Browsing, and our ongoing execution against that promise.

Thanks,
-Eric Lawrence

Posted by ieblog | 149 Comments
Filed under:

Engineering POV: IE6

The topic of site support for IE6 has had a lot of discussion on the web recently as a result of a post on the Digg blog. Why would anyone run an eight-year old browser? Should sites continue to support it? What more can anyone do to get IE6 users to upgrade?

For technology enthusiasts, this topic seems simple. Enthusiasts install new (often unfinished or “beta”) software all the time. Scores of posts on this site and others describe specific benefits of upgrading. As a browser supplier, we want people to switch to the latest version of IE for security, performance, interoperability, and more. So, if all of the “individual enthusiasts” want Windows XP machines upgraded from IE6, and the supplier of IE6 wants them upgraded, what’s the issue?

The choice to upgrade software on a PC belongs to the person responsible for the PC.

Many PCs don’t belong to individual enthusiasts, but to organizations. The people in these organizations responsible for these machines decide what to do with them. These people are professionally responsible for keeping tens or hundreds or thousands of PCs working on budget. The backdrop might be a factory floor or hospital ward or school lab or government organization, each with its own business applications. For these folks, the cost of the software isn’t just the purchase price, but the cost of deploying, maintaining, and making sure it works with their IT infrastructure. (Look for “nothing is free” here.) They balance their personal enthusiasm for upgrading PCs with their accountability to many other priorities their organizations have. As much as they (or site developers, or Microsoft or anyone else) want them to move to IE8 now, they see the PC software image as one part of a larger IT picture with its own cadence.

Looking back at the post on Digg, it’s not just IT professionals. Some of the ‘regular people’ surveyed there were not interested in upgrading. Seventeen percent of respondents to the Digg IE6 survey indicated that they “don’t feel a need to upgrade.” Separately, a letter to a popular personal technology columnist last week asked if people will somehow be forced to upgrade from their current client software if it already meets their needs.

The engineering point of view on IE6 starts as an operating systems supplier. Dropping support for IE6 is not an option because we committed to supporting the IE included with Windows for the lifespan of the product. We keep our commitments. Many people expect what they originally got with their operating system to keep working whatever release cadence particular subsystems have.

As engineers, we want people to upgrade to the latest version. We make it as easy as possible for them to upgrade. Ultimately, the choice to upgrade belongs to the person responsible for the PC.

We’ve blogged before about keeping users in control of their PCs, usually in the context of respecting user choice of search settings or browser defaults. We’ll continue to strongly encourage Windows users to upgrade to the latest IE. We will also continue to respect their choice, because their browser is their choice.

Dean Hachamovitch

Posted by ieblog | 262 Comments
Filed under:

Engineering POV

To date, this blog has focused on the engineering specifics of what we've done with the IE product. From our point of view, it's been a useful forum both for talking and listening. Looking at the comments, we can understand what makes sense to readers and where we need to be clearer.

At the same time, we've seen many questions about broader topics, like IE6, HTML5 and other standards, or benchmarking. With IE8's release and Windows 7's "sign-off," now is a good time to add another kind of blog post. We want to use these posts to share our Engineering Point of View about broader topics and see feedback on them ahead of the next release.

Why? For many web technology questions, finding many passionate and often contradictory opinions is easy. For example, just on the topic of video codecs within HTML5 (much less the rest of the spec), finding strong language from smart people disagreeing with each other is easy. This blog is from the IE engineering team, and everything we write here continues to be from the “Engineering Point of View.” We simply want to be clearer about what we’re thinking and what we balance as we build and service IE.

Your comments are always welcome. We read all the comments on this blog (and many of the posts and comments on many other blogs). We'll also keep posting and reading comments on specifics, like How to make IE open tabs faster and How to log into two webmail accounts at the same time. Comments about other posts you’d like to see are also always welcome.

Thanks –
Dean Hachamovitch
General Manager

Posted by ieblog | 24 Comments
Filed under:

Internet Explorer July Out-of-Band Cumulative Security Update

Internet Explorer is releasing an out-of-band update available via Windows Update. Alternatively, you can receive this and all other Microsoft updates via the new Microsoft Update. I encourage you to upgrade to Microsoft Update if you haven’t already to ensure that you receive the latest updates for all Microsoft products.

This update addresses three privately reported vulnerabilities which could allow remote code execution. The security update addresses the vulnerability by modifying the way Internet Explorer handles objects in memory and table operations.

In addition, the update includes two defense-in-depth protections against known techniques that are able to bypass ActiveX Security Policy when ActiveX controls have been created using certain Active Template Library (ATL) methods in specific configurations.  The first defense-in-depth  is enabled by default and modifies how ATL-based controls read persisted data.  The second defense-in-depth is disabled by default and offers the ability to regulate usage of the IPersistStream* and IPersistStorage interface implementations within individual controls. 

For detailed information on the contents of this update, please see the following documentation:

This security update is rated Critical for all released versions of Internet Explorer except Internet Explorer 6, Internet Explorer 7, and Internet Explorer 8 running on supported editions of Windows Server 2003 and Windows Server 2008. 

I encourage everybody to download this security update and other non-IE security updates via Windows Update or Microsoft Update. Windows users are also strongly encouraged to configure their systems for automatic updates to keep their systems current with the latest updates from Microsoft.

Terry McCoy
Program Manager
Internet Explorer Security

Update 5:41pm: removing * from IPersistStorage

Posted by ieblog | 63 Comments

Check Out the New Developer Tools Tutorials

I’d like to invite you to check out the new tutorials added to the Developer Tools content. These tutorials are written to help you quickly learn how to use the Developer Tools to solve Web page issues. Each tutorial is set up to focus on a programming problem to solve, such as changing text on the page, update a CSS class, or inspect a Jscript variable. You can follow the step-by-step instructions provided to learn how to use the Developer Tools to solve these and similar problems.

Hi, my name is Duc “Cash” Vo, a Programmer Writer on the Internet Explorer team and I’m excited about developing content for the Developer Tools. As a Web developer, I’ve long wished for an integrated developer tools, and I got my wish in IE8! This is my first time posting to the IEBlog, and I look forward to discussing features and improvements for the Developer Tools with this community.

With the release of each beta for Internet Explorer 8, you might have read about the Developer Tools’ features and benefits on MSDN, and you may even have tried them out. (But just in case, if you haven’t done so, it may be to your benefit to check out the Developer Tools on MSDN now before you proceed.) With the final release of IE8, we’ve written a series of tutorials and created a “sandbox” for you to play in.

We categorize tutorial topics based on your Web site’s problem sets that you can resolve using the Developer Tools. We also title our topics based on tasks you as a web developer might want to perform. For example, under the HTML section, you’ll see topics such as:

  • I want to change the Item header to Item Description.
  • I want to center align all of the prices.
  • I want my Price Total field be a read-only element.

Similarly, under the CSS section, you’ll see topics such as:

  • I want to update the .listingsTable class.
  • I want to add a new class .price and have it apply to the Price column.

Head over to the Developer Tools tutorials at http://msdn.microsoft.com/en-us/library/dd565631(VS.85).aspx and have some fun. Once you’re done, we’d love to hear about your experiences using these tutorials. Let us know how can we make them more useful for you, and what scenarios and skills would you like us to add.

Until next time,

Duc (Cash) Vo
Programmer Writer
Internet Explorer

Posted by ieblog | 53 Comments
Filed under:

Update on the Compatibility View List in Internet Explorer 8

I’ve written a few posts about the Microsoft-supplied Compatibility View List on the IEBlog, calling out the what, how, and why of the feature. I wanted to take this opportunity to bring the community up to speed on what’s transpired since Internet Explorer 8 released back in March of this year and talk a little bit about the future actions planned for the list.

The Story So Far…

Let’s start with a quick recap of the feature... by default Internet Explorer 8 displays web content using its newest, most standards compliant mode. The problem is that some of today’s web pages expect the older, less interoperable behavior from Internet Explorer , handing this latest version of Internet Explorer code meant for older releases of the browser. The result is web pages that might not function correctly in ways ranging from just looking a bit misaligned to not working at all. During the Beta cycle, we introduced the Compatibility View button, which allowed savvy end-users to resolve compatibility problems they might encounter as described above. Despite all of our activities around site outreach, we saw telemetry data that indicated users still had to use Compatibility View in the course of normal browsing. Of particular concern was button use on popular / critical (banking, government, etc…) sites that users rightfully expected to “just work” in Internet Explorer 8. To give users the best possible experience, we combined telemetry data about Compatibility View button presses with other feedback sources – customer-filed bugs, Report a Webpage Problem data, our own compatibility testing, etc… - to create a list of sites that were likely best displayed in Compatibility View. The list’s not enabled by default - users must opt-in to the feature (known simply as the Compatibility View List or Compatibility List, in other documents) as part of the first run experience or later by selecting ‘Include updated website lists from Microsoft’ at Tools -> Compatibility View Settings. For those that chose to do so, Internet Explorer 8 displays sites on the list in Compatibility View rather than the default “best standards mode”. In other words, it’s as if the user pressed the Compatibility View button for sites on the list with the benefit that the end user avoids having to first experience a website compatibility failure to make the determination that these particular sites are best viewed in a non-default manner. You can view the list currently available on your Internet Explorer installation by typing ‘res://iecompat.dll/iecompatdata.xml’ into the browser’s address bar.

Compatibility View List Updates Since Internet Explorer 8’s Release

Though the originally stated list update frequency was about every two months, we’ve actually kept a brisker pace, delivering an updated list about every month. There are a few reasons a faster cadence immediately following Internet Explorer 8’s release has made sense –

  • To be extra-responsive to end-user and site administrator feedback. The Compatibility View List is still relatively new and we wanted to be as agile as possible in responding to list edit requests.
  • To align with Windows 7’s Release Candidate build. The Internet Explorer team shipped a Compatibility View List update in May specifically to coincide with Windows 7’s Release Candidate; prior versions of the Compatibility View List were only available for Windows XP and Windows Vista (and corresponding server versions).

Going forward, we expect to return to the originally stated cadence. A spreadsheet, available from the Microsoft Download Center, provides transparency into the changes that have been made to the list since its creation. The spreadsheet also contains targeted guidance for sites on the list including step-by-step instructions for performing compatibility testing with and without the Compatibility View List active and the list removal process.

Changes to the Site Removal Process in Upcoming Compatibility View List Updates

Since the list’s inception, the criteria for site removal has been site owner request (process documented here). Going forward, we’re adding a second way that sites can get removed from the Compatibility View List: basic user experience testing.

For several months now, the Internet Explorer team has been doing basic user experience testing for all sites listed on the Compatibility View List. The test methodology is straightforward: in each test pass a tester starts at the home page of a site and examines a set of pages that follows the core user experience for that website. For example, on a video sharing site the core scenarios include watching a video, rating a video, commenting on a video, sharing the video link with a friend, etc… and the tester will browse around the site completing each operation. On each page visited, testers check for visual and functional issues by performing comparisons between Internet Explorer 8 modes (Internet Explorer 8 Standards and Compatibility View) and between browsers. Doing these comparisons aids in determining what working / not working looks like, which isn’t always obvious on sites / pages the tester isn’t super-familiar with. A grading system tracks the type and severity of problems, ranging from ‘no problems found’ to ‘scenario doesn’t work’. Subsequent test passes combine revisiting pages that were previously identified as having compatibility issues as well as augmenting with new pages.

The question of how much of a site one needs to test to determine compatibility is a difficult one. While it's somewhat straightforward to prove the presence of a compatibility problem, it’s decidedly

less so to prove the absence of one. In other words, if a tester finds a compatibility problem, there’s a problem. But, if a tester doesn't find a compatibility problem, does that mean there isn't a problem or that the tester just didn’t visit a page that happens to demonstrate one? By charting the compatibility “scores” of the tested sites over time and by traversing a different set of pages in subsequent test passes, we’ve grown more confident in our ability to gauge the type of compatibility experiences Internet Explorer 8 users are likely to have independent of the Compatibility View List.

Conclusion

With the next Compatibility View List update you’ll see a new designation for site removal in the tracking spreadsheet – “Removed per Microsoft testing” - indicating that our test passes have not found a compatibility issue for some time and so we’re removing that site from the Compatibility View List. We’ve stated previously that we view the Compatibility View List as a short-term solution and believe that adding this additional site removal criteria helps us achieve this end while at the same time ensuring that users continue to have a great compatibility experience.

Scott Dickens
Program Manager

Posted by ieblog | 27 Comments

How to make IE open new tabs faster

Browser add-ons are a great way to enhance the experience and capabilities of your Web browser. Add-ons are loaded by IE when you open a new browser window or tab. This is usually a quick process, but certain add-ons may cause IE to take a longer time than expected. For example, after installing Skype 4.1*, this user (and his father) encountered a slowdown in IE on their computers. Just like most of you, almost everybody on the IE team is tech support for their parents, so improving the user's ability to fix problems themselves is a topic that is near and dear to our heart. (Hi Dad!)

The delay caused by add-ons is usually the reason you see an IE tab with ‘Connecting…’ at the top, and as a result, the web page (even if it is about:blank) takes a few seconds to load. You can fix this type of issue by doing the following:

Examine the performance impact of your add-ons using the Manage Add-ons dialog. Click on Tools - Manage Add-ons, and look at the ‘Load time’ column. Some users have already discovered this.

Manage add-ons dialog showing load times for various add-ons.

The load time shows the average time to load the add-on** and the wait time to finish initializing for each new window or tab creation. If you do not want to keep a slow loading add-on around, you can disable it, and it won’t be loaded the next time you open a new window or tab. You can also open Add/Remove Programs and remove IE add-ons that you are not using. This removes the add-on for all users on the computer.

When you disable an add-on, the new add-on management feature in IE8 (mentioned previously) finds all related add-ons (toolbar helpers, etc) that are also part of the browser extension that you are disabling, and allows you to disable them as well. Add-ons that are already disabled will show up in the ‘Manage Add-ons’ dialog with their last load time in brackets. Note that their ‘load time’ is really ‘0.00 seconds’, because IE does not load disabled add-ons. We show the last load time (in brackets) so you can evaluate the performance impact of turning an add-on back on.

disable add-on dialog

As always, we are working with IE add-on makers on performance and stability so you have a fast, reliable and feature-filled browser. We'd love to get your feedback on this topic.

Thanks!
Frank Olivier
Internet Explorer User Experience Program Manager

*Skype 4.1 installs the Skype program, and an Internet Explorer add-on that enables you to click phone numbers (or names of your Skype contacts) on web pages to call them with Skype. The Skype IE add-on can be uninstalled or disabled without affecting the core functionality of the Skype program itself.

**We don’t show load time for ActiveX controls or registry-based extensions (Command Bar buttons). Also, add-ons that cancel themselves from being loaded (in their DllMain function) also don’t show a load time.

Posted by ieblog | 86 Comments

Changes to IE8's First Run

This blog post details a change we’re making to IE8’s first run experience, previously described in other posts here and here.  The goal of the IE setup experience is to put IE users in control of their settings and respect existing defaults.  IE will never install, or become the default browser without your explicit consent.  However, we heard a lot of feedback from a lot of different people and groups and decided to make the user choice of the default browser even more explicit. This change is part of our ongoing commitment to user choice and control.

Specifically, users who install IE8 and have another browser set as the default will now see this panel as part of their first run experience:

IE settings wizard default browser question

Users who already have IE set as their default browser won’t see this screen. This panel was actually part of the “Choose custom settings” option, described in this post, “Screen 8.” As part of this change, the “Use express settings” option no longer includes setting IE as the default browser.

We decided to use dynamic updates in order to deliver this change to the market as quickly as possible, rather than re-release IE8 in over 60 languages.  We expect to roll this out in mid-August.  Over 90% of users who run IE8 setup opt-in to dynamic updates in this panel in setup:

IE install screen - install updates

(This will also install the latest security updates as part of setup.)

This change applies not only to IE8 installations on Vista and XP, but also when these users with a non-IE default browser install Windows 7. 

We will make this change available in the next cumulative security update for Internet Explorer, so administrators that regularly deploy security updates throughout their organization can easily incorporate this new behavior.  Administrators can find information about how to manage software and security updates in the Update Management TechCenter on Technet.  Administrators can customize the default browser settings using Set Program Access Defaults

The IE team

Posted by ieblog | 39 Comments

Internet Explorer’s ActiveX Security Mitigations in Use

Background

As a part of the July security bulletin, Microsoft yesterday released an update to mitigate a vulnerability in the “Microsoft Video” ActiveX control. This control contained a stack-based buffer overflow which could be exploited by a malicious web page. 

If you haven’t yet done so, please make sure you’ve installed the latest updates from WindowsUpdate to help keep your system secure.

The Microsoft Video control should not have been marked as safe because it wasn’t intended for use within the browser. Rather than updating the control itself, Microsoft decided to block misuse of the control via a killbit.  Killbits are simple registry flags that instruct the browser not to load the specified control. One advantage of killbits is that they can easily be set with a simple registry modification, and a “FixIt Script” that set this killbit was available on July 6th. You can learn more about the killbit mechanism over on the SRD Blog (Part 1, Part 2, Part 3).

ActiveX Mitigations by IE Version

The Video ActiveX vulnerability was extremely serious for IE6 users because that browser version provides no protection against this exploit unless the killbit is applied.

In contrast, IE7 users had some protection against exploitation of this vulnerability.  IE7 includes the ActiveX Opt-in feature which disables most ActiveX controls (including this one) by default.  IE7 users on Vista also benefit from Protected Mode, which helps prevent the installation of malicious software, even in the event that an exploit results in code execution.

Beyond Protected Mode and ActiveX Opt-in, IE8 users benefitted from additional protections that help to mitigate vulnerabilities like this one. IE8 includes the per-site ActiveX feature, which extends ActiveX Opt-in by preventing controls that are permitted to run on one site from running automatically on other sites. More importantly in this case, DEP/NX memory protection is enabled by default for IE8 users on Windows XP SP3, Windows Vista SP1+, and Windows 7.  DEP/NX helps to foil attacks by preventing code from running in memory that is marked non-executable.  DEP/NX, combined with other technologies like Address Space Layout Randomization (ASLR), make it harder for attackers to successfully exploit certain types of memory-related vulnerabilities, including this one.

Security is a Journey

Unfortunately, attackers are always on the lookout for vulnerable code, and Microsoft is currently investigating a vulnerability recently discovered in the Microsoft Office Web Components (OWC) ActiveX controls. Until an update is available, users can help prevent exploitation of the vulnerability by running the FixIt Script that killbits the vulnerable OWC controls.

No Easy Answers

When talking to customers, I’m often asked: “ActiveX controls often have problems. Why not release a version of Internet Explorer without ActiveX?

It’s a reasonable question, and it goes back to my point that “security is usually easy, it’s the tradeoffs that are hard.” End-users or IT administrators can easily disable ActiveX in all versions of IE in just a few seconds: click Tools > Internet Options > Security > Custom Level… and change the “Run ActiveX controls and plug-ins” setting to “Disable.” Alternatively, IE7 and IE8 users can launch Internet Explorer in No Add-ons mode using the Start Menu shortcut. Unfortunately, many sites depend on the rich capabilities provided by add-on technologies like ActiveX, and those sites will not work as well, or at all, if ActiveX is disabled. Users and administrators can more tactically disable unwanted controls using Manage Add-ons or Group Policy, reducing attack surface as much as possible.

While we continue to evangelize best-practices for developing secure add-ons, we strongly encourage users and organizations to upgrade to IE8.  IE8 offers a robust set of mitigations against exploitation of vulnerable controls, helping keep your systems secure.

Thanks for reading!

-Eric Lawrence

Posted by ieblog | 26 Comments
Filed under:

IE Compatibility List Pruning

Hi, I am Michael Benny, a tester on networking in Internet Explorer. During the Internet Explorer 8 development cycle I was responsible for verifying many of the pieces of Compatibility View. We have discussed earlier about how the Compatibility View feature works and the steps a site author can take to ensure the Compatibility View button never displays for IE8 users visiting your site. There is another scenario that we have not yet covered, if my site was already added by an End-user to their Compatibility View list before my site was updated, and now it’s ready, how would I get the site off of that user’s list? I wanted to share one particular feature that we haven’t blogged about before – the ability to “trim” domains from a user’s Compatibility View list.

As a quick refresher on Compatibility View, Internet Explorer 8 uses its most standards-compliant rendering behavior by default. This configuration may cause problems with websites that expect the older, less interoperable behavior from IE. As a site administrator, you have a number of tools at your disposal to ensure IE8 clients have a compatible experience with your website – taking advantage of the standards improvements in IE8 or using the X-UA-Compatible header to tell IE8 “display content as IE7 would have” being the two most common options site authors have requested.

End-users also have a way to mitigate compatibility issues they may encounter in the course of normal browsing on sites that do not have the X-UA-Compatible option explicitly set. They can choose to view a site in Compatibility View, an IE7 emulation mode, by toggling a button on the browser’s address bar. Internet Explorer 8 remembers Compatibility Button presses on a per-domain basis in order to provide a more seamless return-visit experience. These domains are stored in a registry location on the client at HKCU\Software\Microsoft\Internet Explorer\Browser Emulation.

When a site is in a user’s Compatibility View list, the default document rendering behavior will be set to IE7 Emulation mode and it will affect the User Agent String used to request pages. As a site admin, you are always in control of how your site is displayed. Using the X-UA-Compatible tag, you can override Compatibility View on the client and dictate the exact rendering mode your site should be displayed in. Site admins also have the option to deploy the X-UA-Compatible header for a large section of pages as an HTTP header (Example: IIS and Apache). You can take this one step further by using the X-UA-Compatible to also remove your domain’s entry from the user’s Compatibility View list. Here’s how…

For a domain to be trimmed, the End-user must first land on a page with the X-UA-Compatible Meta tag or HTTP Header. The presence of an IE8 <META> tag does indeed trigger the list clean-up process, but that’s not all there is to it. The next step is to look for a file called ‘IEStandards.xml’ placed at the domain root. IE will first make an HTTP HEAD request for this file looking for its presence. Absence of the file means that the domain remains in the user list. If the HEAD request is returned successfully, then IE will perform an HTTP GET request for the file. In the file, a tag called ‘IE8StandardsMode’ signals the list entry is really ready to be trimmed. Here is an example of the correct server configuration for ‘example.com’:

  1. Set the page X-UA-Compatible header set to a value indicating IE8 mode
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">
  2. Place a file at the root of the domain ‘example.com’
    http://example.com/IEStandards.xml
  3. The file should have a root XML element called IE8StandardsMode:
    <IE8StandardsMode/>

Site admins should be aware that this affects all sub-domains. So if a user visits a page at ‘support.example.com’, which is configured as shown here, but there is another sub-domain like ‘mail.example.com’, which would still like to respect the user’s choice to put the site into Compatibility View, then the ‘mail’ sub-domain will use IE8 Standards mode rendering.

Domain graph.  There is a subdomain support.example.com which has the meta tag set to IE8, at the root there is an iestandards.xml file now if the user visits mail.example.com they will view that subdomain in IE8 standards mode.

The entries on the Compatibility View list reflect an entire domain, example: ‘example.com’, rather than subdomains like ‘mail.example.com’ and ‘support.example.com’. IE must process the request to trim the domain entry from a source that represents the entire domain, otherwise side effects to subdomains may occur. As an example, suppose the entire ‘example.com’ domain is on the user’s Compatibility View list. Later, ‘support.example.com’ does great work to update their site to support IE8 and includes a HTTP header / <META> tag indicating that portion of the site is best viewed in IE8 Standards Mode. ‘example.com’ and ‘mail.example.com’ have still not been updated. If IE were to remove the entry for ‘example.com’ from the user’s list based solely on the presence of the HTTP header / <META> tag value found at ‘support.example.com’, the user could encounter a compatibility failure when they visit non-updated content at ‘example.com’ or ‘mail.example.com’. Checking for the ‘IE8StandardsMode’ file at the root domain level solves this case by requiring that someone “authoritative” for the domain signal list cleanup. That way, IE users can be assured of a consistent compatibility experience on the domain.

Getting the IEStandards.xml file follows a very similar model to how IE will request favorite icons for domains, but we wanted to address the issue of server overhead. To avoid IE8 making multiple and unnecessary requests to a server for this file on every page navigation with the X-UA-Compatible option set, there exists a 30 day timeout period since the last request. This 30 day timeout period is also set when a user adds a domain to their user list, so do not be alarmed if you still see IE8 Compatibility View requests after deploying the file to the domain root.

Timeline of traffic between IE8 and the webserver which determines  when IE can remove a site from the compatibility list.

Thanks,
Michael Benny
IE Test

Update 6/4/09: Correcting a reference to IESettings.xml which should be IEStandards.xml

Posted by ieblog | 75 Comments

IT Professionals: Prepare for Internet Explorer 8 availability via Windows Server Update Services (WSUS) in August 2009

For those of you who manage your organization’s desktops using Windows Server Update Services (WSUS) Internet Explorer 8 will be made available via this technology starting August 25, 2009.  Internet Explorer 8 will be made available as an “Update rollup” and will be applicable to all supported languages.

Is my organization affected?

If your organization uses WSUS and has it configured to auto-approve Update rollup packages, upon acceptance of the Internet Explorer 8 End User License Agreement (EULA) by the WSUS administrator, Internet Explorer 8 will install automatically on computers running Internet Explorer 6 or 7 on supported operating systems.

What should I do if I auto-approve Update rollups but want to control when I deploy Internet Explorer 8?

To give you control over how and when Internet Explorer 8 is deployed in your environment, perform the following steps:

Before August 25, 2009:

  1. Turn off auto-approve for “Update rollup” packages in WSUS, and approve the updates manually.  Note: Even if Auto-Approve for “Update rollup” is on, you will still be required to approve the Internet Explorer 8 EULA before Internet Explorer 8 is deployed to downstream clients.

After August 25, 2009:

  1. Synchronize your WSUS server.
  2. Decline the Internet Explorer 8 update packages.
  3. If you typically auto-approve update rollup packages, you can re-enable automatic approval for “Update rollups.”

What other Internet Explorer 8 updates will be available via WSUS?

Cumulative security updates for Internet Explorer 8 and Internet Explorer 8 Compatibility View List updates will also be released via WSUS as they become available.

To deploy Internet Explorer 8 today, visit the Internet Explorer TechNet Center – among other useful resources you’ll find an Internet Explorer Deployment Guide and information about the Internet Explorer Administration Kit which explains how to generate a MSI installer and distribute it using Systems Management Server or Group Policy.

Eric Hebenstreit
Lead Program Manager

Posted by ieblog | 15 Comments
Filed under:
More Posts Next page »
 
Page view tracker