<?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>Microsoft RSS Blog : RSS Platform</title><link>http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx</link><description>Tags: RSS Platform</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Still Gone? Ok – got it!</title><link>http://blogs.msdn.com/rssteam/archive/2007/04/27/still-gone-ok-got-it.aspx</link><pubDate>Fri, 27 Apr 2007 09:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2296197</guid><dc:creator>rss</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/2296197.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=2296197</wfw:commentRss><description>&lt;P&gt;Sam Ruby pointed out &lt;A href="http://intertwingly.net/blog/2007/04/04/Yep-Still-Gone" mce_href="http://intertwingly.net/blog/2007/04/04/Yep-Still-Gone"&gt;HTTP 410 GONE support&lt;/A&gt; in feed readers or rather the lack thereof. He links to the list of &lt;A href="http://intertwingly.net/stories/2007/04/04/byAgentFull" mce_href="http://intertwingly.net/stories/2007/04/04/byAgentFull"&gt;User-Agent strings&lt;/A&gt; that continue to request the feed that is gone. One of the entries points at the Windows RSS Platform as an "offender": &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;Windows RSS Platform/1.0 (MSIE 7.0; Windows NT 5.1) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;It's listed with 282 hits. At first I was surprised to see the Windows RSS Platform in that list since we specifically added &lt;A href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" mce_href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html"&gt;410 GONE&lt;/A&gt; support. But then it dawned on me: That's not the Windows RSS Platform! &lt;/P&gt;
&lt;P&gt;Well, it is, but it isn't. The above User-Agent string is the one from the Beta 2 Preview release (Jan 2006) of the Windows RSS Platform. The User-Agent string changed in Beta 2 (April 2006) to the final string: &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;Windows-RSS-Platform/1.0 (MSIE 7.0; Windows NT 5.1)&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;I described the string &lt;A href="http://blogs.msdn.com/rssteam/archive/2006/04/28/586220.aspx" mce_href="http://blogs.msdn.com/rssteam/archive/2006/04/28/586220.aspx"&gt;here&lt;/A&gt; a year ago. See the difference? The dashes instead of spaces! Why the change? Well it turns out that the product token of the &lt;A href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html" mce_href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"&gt;User-Agent&lt;/A&gt; string may not include spaces, since spaces delimit product tokens and comments. &lt;/P&gt;
&lt;P&gt;So it turns out that there are still people running the Beta 2 Preview version of the Windows RSS Platform, or some application is "faking" the User-Agent string. &lt;/P&gt;
&lt;P&gt;Either way, I just verified that the RTM version of the Windows RSS Platform handles 410 GONE correctly. I used the following &lt;A href="http://microsoft.com/powershell" mce_href="http://microsoft.com/powershell"&gt;Powershell&lt;/A&gt; script: &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;$fm = new-object -comobject "Microsoft.FeedsManager" &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;$feed = $fm.rootfolder.CreateFeed("gone","&lt;A href="http://www.intertwingly.net/blog/index.rss" mce_href="http://www.intertwingly.net/blog/index.rss"&gt;http://www.intertwingly.net/blog/index.rss&lt;/A&gt;") &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;$feed.SyncSetting &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;$feed.Download() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;$feed.SyncSetting &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;When you run it you will see that the &lt;A href="http://msdn2.microsoft.com/en-us/library/ms684737.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms684737.aspx"&gt;SyncSetting property&lt;/A&gt; is changed from 0 to 2 after the Download() call. Note that the &lt;A href="http://msdn2.microsoft.com/en-us/library/ms686410.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms686410.aspx"&gt;SyncSettings&lt;/A&gt; are defined as: &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;typedef enum { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;FSS_DEFAULT = 0, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;FSS_INTERVAL = 1, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;FSS_MANUAL = 2 &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Courier New"&gt;} FEEDS_SYNC_SETTING; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;FSS_DEFAULT - Use the system-defined &lt;A href="http://msdn2.microsoft.com/en-us/library/ms684707.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms684707.aspx"&gt;DefaultInterval&lt;/A&gt; value.&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;FSS_INTERVAL - Use the &lt;A href="http://msdn2.microsoft.com/en-us/library/ms684716.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms684716.aspx"&gt;Interval&lt;/A&gt; value defined by the feed.&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;FSS_MANUAL - Do not automatically update the feed. Use &lt;A href="http://msdn2.microsoft.com/en-us/library/ms684760.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms684760.aspx"&gt;Download&lt;/A&gt; to manually update the feed.&lt;/P&gt;
&lt;P&gt;which means that the feed initially uses the default sync interval to get updated. Upon download, the setting is changed to Manual since a feed that is GONE should no longer be updated automatically. &lt;/P&gt;
&lt;P&gt;- Walter vonKoch &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2296197" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/Community/default.aspx">Community</category></item><item><title>Feeds Plus: An Intern Adventure</title><link>http://blogs.msdn.com/rssteam/archive/2007/01/24/feeds-plus-an-intern-adventure.aspx</link><pubDate>Wed, 24 Jan 2007 07:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1519346</guid><dc:creator>rss</dc:creator><slash:comments>121</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/1519346.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=1519346</wfw:commentRss><description>&lt;P&gt;Last summer, we had a couple of interns on the RSS team here in IE: Nate Furtwangler, a developer intern, and&amp;nbsp;Chrix Finne, a&amp;nbsp;Program Manager intern. Nate and Chrix both did an amazing job helping us to ship IE7 and Vista, and they also found the time to knock out a really cool project. Here's a big &lt;STRONG&gt;thanks&lt;/STRONG&gt; from all of us to them.&lt;/P&gt;
&lt;P&gt;I'll let Chrix describe the project (and their experience) in his own words. In case you're wondering, the "where's Sean's office" thing is a reference to Chrix's decision that&amp;nbsp;it would be fun to &lt;A href="http://tkfiles.storage.msn.com/x1p2wM0QcrJzsCYYqs5dos2k_DEnAQ8pmhhucWYs3QPoSfx5m0oCc8CMegS9QTAn4Lqo0Bzg-YtBdufyCB-a9x47FntmF5vI6mC-Udd9gF2e8U" mce_href="http://tkfiles.storage.msn.com/x1p2wM0QcrJzsCYYqs5dos2k_DEnAQ8pmhhucWYs3QPoSfx5m0oCc8CMegS9QTAn4Lqo0Bzg-YtBdufyCB-a9x47FntmF5vI6mC-Udd9gF2e8U"&gt;relocate my office&lt;/A&gt; to the roof of the parking garage while I was on vacation. Good times.&lt;/P&gt;
&lt;P&gt;- Sean&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hi! My name is Chrix Finne and this past summer I was an intern Program Manager on the IE RSS Team – also known as ‘Team RSS got new digs so the &lt;B&gt;interns got a window office&lt;/B&gt;.’ I had the privilege of working on several cool projects this past summer, and had a blast while doing it. Shoutout to my officemate &lt;B&gt;Nate Furtwangler&lt;/B&gt;, developer intern and my partner in crime. Though they consumed far fewer Swedish Fish than Nate and I, my mentor &lt;B&gt;Jane “where’s Sean’s office?” Kim&lt;/B&gt; and my manager &lt;B&gt;Sean “Romulus” Lyndersay&lt;/B&gt; were also awesome and kept me on my toes. Congrats to the whole team on IE7 and Vista RTM! 
&lt;P&gt;We are proud to announce that our intern project, &lt;B&gt;&lt;A href="http://www.enhanceie.com/ie/feedsplus.asp" mce_href="http://www.enhanceie.com/ie/feedsplus.asp"&gt;Feeds Plus&lt;/A&gt; &lt;/B&gt;also shipped! It’s a free IE7 add-on that adds two features to the Windows Feeds experience: &lt;B&gt;aggregation&lt;/B&gt; and &lt;B&gt;notification&lt;/B&gt;. We hope that Feeds Plus will help users get more flexibility and engagement with feeds in Windows. 
&lt;P&gt;Feeds Plus, running in the background, can &lt;B&gt;combine multiple feeds&lt;/B&gt; into a single,&amp;nbsp;&lt;A href="http://www.reallysimplesyndication.com/riverOfNews" mce_href="http://www.reallysimplesyndication.com/riverOfNews"&gt;river of news&lt;/A&gt;-style feed.&amp;nbsp;All the user has to do is turn on Feeds Plus’ aggregator, and every folder of feeds will sprout an aggregate feed at the top. This can be very useful – for instance, I can make a folder with &lt;B&gt;all of my news feeds&lt;/B&gt; and then read all my news at once through the News’ aggregate feed. &lt;B&gt;Read/unread information&lt;/B&gt; is synced between the aggregate feed and its children, and aggregate feeds are &lt;B&gt;searchable&lt;/B&gt; just like any other feed. If multiple feeds use Simple List Extensions (SLE) then the corresponding aggregate feed will as well – this is cool because you can combine multiple different eBay feeds, and use SLE to sort by price across all of them. 
&lt;P&gt;A &lt;B&gt;pop-up feed notification&lt;/B&gt; reminiscent of Outlook’s is the second feature in Feeds Plus. The Windows Feed Download Engine always runs in the background, so users have to check to see if new items have arrived. With Feeds Plus, the user can &lt;B&gt;choose which feeds matter most&lt;/B&gt; to them and &lt;B&gt;get a pop-up ‘toast’&lt;/B&gt; as soon as those feeds have new items waiting. The pop-up is designed to be unobtrusive—it fades in and out and won’t go crazy and flash every half second—and it includes a handy link to the feeds that it’s announcing: 
&lt;P&gt;&lt;IMG height=75 src="http://blogs.msdn.com/blogfiles/rssteam/WindowsLiveWriter/FeedsPlusAnInternAdventure_12249/clip_image002.jpg" width=352 border=0 mce_src="http://blogs.msdn.com/blogfiles/rssteam/WindowsLiveWriter/FeedsPlusAnInternAdventure_12249/clip_image002.jpg"&gt; 
&lt;P&gt;Feeds Plus is &lt;STRONG&gt;an unsupported IE7 add-on&lt;/STRONG&gt; (meaning that it’s not supported by Microsoft technical support or by the IE development team). One important note is that it does not have accessibility support in this release. &lt;STRONG&gt;Don't use it if you're uncomfortable using unsupported software. &lt;/STRONG&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Download Feeds Plus &lt;A href="http://www.enhanceie.com/ie/feedsplus.asp" mce_href="http://www.enhanceie.com/ie/feedsplus.asp"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So, that’s Feeds Plus. I also had the chance to help design the &lt;B&gt;&lt;A href="http://blogs.msdn.com/rssteam/archive/2006/12/04/windows-vista-and-feeds.aspx" mce_href="http://blogs.msdn.com/rssteam/archive/2006/12/04/windows-vista-and-feeds.aspx"&gt;Feed Headlines gadget&lt;/A&gt;&lt;/B&gt; on the Windows Vista Sidebar. Feed Headlines shows the user a &lt;B&gt;scrolling list of headlines &lt;/B&gt;from one or many feeds with a nice little &lt;B&gt;preview window&lt;/B&gt; and &lt;B&gt;links to the browser&lt;/B&gt;. It’s a great way to keep content handy – I keep an instance pointed at Engadget that I use to procrastinate all the time. 
&lt;P&gt;My favorite thing about Feed technology in Windows is how much freedom it gives the user to choose how, when, and where to consume &lt;B&gt;different types of web content&lt;/B&gt; – from news feeds to Craigslist searches. I think that it’s critical to provide different ways to read and consume the feed content that’s coming in, so I hope you enjoy these little feeds extras. 
&lt;P&gt;Yours, 
&lt;P&gt;Chrix Finne 
&lt;P&gt;PS – One shameless plug: Nate and I were lucky enough to get interviewed by Channel 9, so if you want to see those Swedish Fish for real, keep an eye on &lt;A href="http://channel9.msdn.com/" mce_href="http://channel9.msdn.com/"&gt;Channel 9&lt;/A&gt;&amp;nbsp;(hint: they have a &lt;A href="http://channel9.msdn.com/rss.aspx?ForumID=14&amp;amp;Mode=0&amp;amp;sortby=0&amp;amp;sortorder=1" mce_href="http://channel9.msdn.com/rss.aspx?ForumID=14&amp;amp;Mode=0&amp;amp;sortby=0&amp;amp;sortorder=1"&gt;feed&lt;/A&gt;). They’re on the middle shelf above the demo laptop.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1519346" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Support+in+IE/default.aspx">RSS Support in IE</category></item><item><title>Enclosure Download</title><link>http://blogs.msdn.com/rssteam/archive/2006/12/06/enclosure-download.aspx</link><pubDate>Wed, 06 Dec 2006 19:46:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1224460</guid><dc:creator>rss</dc:creator><slash:comments>39</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/1224460.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=1224460</wfw:commentRss><description>&lt;p&gt;A while ago I posted &lt;a href="http://blogs.msdn.com/rssteam/archive/2006/04/08/571509.aspx"&gt;details&lt;/a&gt; about the RSS Platform Download Engine. That post focused on downloading of feeds, but did not include additional details on enclosure downloads. 
&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;Enclosures are, as most readers know, files that are "attached" to items in an RSS feed. Typically, a publisher will include a reference to a binary file, which an RSS aggregator can optionally download when the feed content is downloaded. The most common example of enclosure use in RSS feeds is for &lt;a href="http://en.wikipedia.org/wiki/Podcasting"&gt;podcasting&lt;/a&gt;, where the attached (or "enclosed") files are audio files. 
&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;As with feed download, we designed the enclosure download with server and client bandwidth in mind since feed as well as enclosure downloads also happen in the background. Their impact on foreground applications should be limited. Similarly, the impact of large enclosure downloads on servers should be limited. 
&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;Let me sketch how the enclosure download process works:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Every time the feed download engine runs it processes feeds that have the "Automatically Download Enclosures" setting set to true it. If it comes across a new item with an enclosure it adds the URL of the enclosure to a &lt;a href="http://en.wikipedia.org/wiki/FIFO"&gt;FIFO&lt;/a&gt; queue. 
&lt;/li&gt;&lt;li&gt;Before the enclosure is added to the queue, the URL is checked with &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iattachmentexecute/iattachmentexecute.asp"&gt;Attachment Execution Service API&lt;/a&gt; (AES) to assure the enclosure file type is one of the permitted types. If it's not, the enclosure download is failed (IFeedEnclosure.LastDownloadError = &lt;a href="http://msdn2.microsoft.com/en-us/library/ms686401.aspx"&gt;FDE_DOWNLOAD_BLOCKED&lt;/a&gt;). 
&lt;/li&gt;&lt;li&gt;The first 4 enclosures in the queue are then handed off to the &lt;a href="http://msdn.microsoft.com/library/en-us/bits/bits/bits_start_page.asp"&gt;Background Intelligent Transfer Service&lt;/a&gt; (BITS). BITS is a background download service that ships in Windows and which enables downloading of files in the background while limiting its affects on network usage. In particular, BITS uses &lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"&gt;HTTP RANGE&lt;/a&gt; requests to download files in chunks. BITS also monitors whether foreground applications (like email or browser) are using the network, and if so, it throttles back its own network usage to limit its impact on those applications. 
&lt;/li&gt;&lt;li&gt;Once BITS completes downloading an enclosure, the Download Engine uses AES to save the enclosure to the folder corresponding to the feed. Saving via AES associates zone information with the file. The zone information is used when the file is launched at a later time. 
&lt;/li&gt;&lt;li&gt;If there are more enclosures waiting to be downloaded and there are less than 4 enclosure downloads active, the next enclosure is handed off to BITS as in step #3. 
&lt;/li&gt;&lt;li&gt;&lt;div&gt;If, however, the server of the enclosure does not support HTTP RANGE requests, the Platform Download Engine falls back to downloading the enclosure via a regular HTTP GET request. If this attempt fails as well, then the enclosure download is fails and will not be attempted again automatically.
&lt;/div&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Note that the enclosure fall-back download (HTTP GET) is size limited to 15MB to limit the impact of denial of service (DoS) attacks against the RSS Platform Download Engine. Since the RSS Platform Download Engine runs in the background, a malicious server could consume all of the client's download bandwidth without the user having any idea. Enclosure download via BITS (HTTP RANGE requests) is less impacted by such an attack and is consequently not size limited. 
&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;In other words, if you are an enclosure publisher that wants to serve enclosures larger then 15MB to IE7 users, then you should use HTTP servers that support HTTP RANGE requests. Most popular web servers support HTTP RANGE requests. 
&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;It's also worth noting, that when a server does not support HTTP RANGE requests, the RSS Platform Download Engine will issue two requests for each file (the first testing for HTTP RANGE support, and the second to download the file without range support).
&lt;/p&gt;&lt;p&gt;For more details on the security measures used to protect applications and users from potentially malicious enclosures, see Miladin's &lt;a href="http://blogs.msdn.com/rssteam/archive/2006/09/20/Securing-feed-enclosures.aspx"&gt;enclosure security&lt;/a&gt; post.
&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;I hope that this description of the enclosure download process explains the "multiple-requests" that some publishers have seen, as well the security restrictions associated with enclosure downloads. 
&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;-Walter vonKoch
&lt;/p&gt;&lt;p&gt;  Program Manager
&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1224460" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category></item><item><title>Windows Vista and Feeds</title><link>http://blogs.msdn.com/rssteam/archive/2006/12/04/windows-vista-and-feeds.aspx</link><pubDate>Mon, 04 Dec 2006 20:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1206275</guid><dc:creator>rss</dc:creator><slash:comments>328</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/1206275.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=1206275</wfw:commentRss><description>&lt;P&gt;As noted pretty much everywhere on the web, Windows Vista &lt;A href="http://windowsvistablog.com/blogs/windowsvista/archive/2006/11/30/microsoft-s-biggest-launch-has-begun.aspx" mce_href="http://windowsvistablog.com/blogs/windowsvista/archive/2006/11/30/microsoft-s-biggest-launch-has-begun.aspx"&gt;launched&lt;/A&gt; (for businesses) last week.&lt;/P&gt;
&lt;P&gt;Windows Vista includes IE7 and the &lt;A href="http://blogs.msdn.com/rssteam/archive/2006/02/09/528195.aspx" mce_href="http://blogs.msdn.com/rssteam/archive/2006/02/09/528195.aspx"&gt;Windows RSS Platform&lt;/A&gt;, and is therefore the first Windows operating system to ship with built-in support for RSS (and the first&amp;nbsp;OS of any kind&amp;nbsp;to have RSS support&amp;nbsp;built-in as a native platform component). &lt;/P&gt;
&lt;P&gt;Windows Vista is, in fact, the fulfilment of a promise we made over a year ago at Gnomedex 5.0: &lt;A class="" href="http://blogs.msdn.com/ie/archive/2005/06/24/432390.aspx" mce_href="http://blogs.msdn.com/ie/archive/2005/06/24/432390.aspx"&gt;Longhorn&amp;nbsp;loves RSS&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In addition to the reading experience in IE7, and the platform features, Windows Vista also include the&amp;nbsp;new&amp;nbsp;&lt;A href="http://www.microsoft.com/windowsvista/features/foreveryone/sidebar.mspx" mce_href="http://www.microsoft.com/windowsvista/features/foreveryone/sidebar.mspx"&gt;Windows Sidebar&lt;/A&gt;, which ships with a Feed Headlines gadget.&lt;/P&gt;
&lt;P&gt;The team that built the gadget have written up a great post on how the gadget was built, and how they leveraged the RSS platform to make development much easier for themselves. &lt;/P&gt;
&lt;P&gt;Read their post here: &lt;A href="http://blogs.msdn.com/sidebar/archive/2006/11/16/building-the-feed-headlines-gadget-using-the-windows-feeds-platform.aspx" mce_href="http://blogs.msdn.com/sidebar/archive/2006/11/16/building-the-feed-headlines-gadget-using-the-windows-feeds-platform.aspx"&gt;Building the Feed Headlines Gadget&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;In case you haven't seen the gadget in action, the screenshot below shows the gadget&amp;nbsp;after the user has clicked on&amp;nbsp;a headline&amp;nbsp;(I've configured it to show the headlines from the MSNBC News &lt;A href="http://www.msnbc.msn.com/id/3032091/device/rss/" mce_href="http://www.msnbc.msn.com/id/3032091/device/rss/"&gt;feed&lt;/A&gt;). &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://tkfiles.storage.msn.com/x1p2wM0QcrJzsCYYqs5dos2k8t7ICERsxL1Y2fdXgqiqTf1EbpxVsgvOvv2v156W7dg3kA7BYzcgOpl6hg0kR_Fl9kNxgb1ih-nLGLD_MhxrB4" mce_src="http://tkfiles.storage.msn.com/x1p2wM0QcrJzsCYYqs5dos2k8t7ICERsxL1Y2fdXgqiqTf1EbpxVsgvOvv2v156W7dg3kA7BYzcgOpl6hg0kR_Fl9kNxgb1ih-nLGLD_MhxrB4"&gt; &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Many thanks&lt;/EM&gt; to the folks on the Sidebar team that developed such a great gadget, as well as to Chrix Finne, who &lt;A href="http://www.microsoft.com/college/ip_overview.mspx" mce_href="http://www.microsoft.com/college/ip_overview.mspx"&gt;interned&lt;/A&gt; on the IE RSS team as a &lt;A href="http://www.microsoft.com/college/ip_pm.mspx" mce_href="http://www.microsoft.com/college/ip_pm.mspx"&gt;PM&lt;/A&gt; this past summer, and helped out the Sidebar team with feature design for this gadget. &lt;/P&gt;
&lt;P&gt;- Sean&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;EM&gt;Note:&lt;/EM&gt; Apologies to readers who downloaded an earlier version of this post, which used a photograph taken by Niall Kennedy and posted on flickr.com. He did not appreciate the usage, and replaced it with a different image. I forgot to include an attribution, which I had fully intended to do, but for which I apologise to him. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1206275" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Support+in+IE/default.aspx">RSS Support in IE</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/Community/default.aspx">Community</category></item><item><title>RSS Platform MiniSDK</title><link>http://blogs.msdn.com/rssteam/archive/2006/09/22/RSS-Platform-MiniSDK.aspx</link><pubDate>Fri, 22 Sep 2006 22:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:766728</guid><dc:creator>rss</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/766728.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=766728</wfw:commentRss><description>&lt;P&gt;Have you wanted to use the Windows RSS Platform from C++? Unlike managed code or script there is no simple way to create header files with the declaration of the IX.. interfaces which are designed for use from C++. Of course the msfeeds.h header file is included in the &lt;A href="http://windowssdk.msdn.microsoft.com/" mce_href="http://windowssdk.msdn.microsoft.com/"&gt;Windows SDK&lt;/A&gt;. If you are hardcore about Windows development you might already have it installed. However, not everyone wants to install the 1GB+ just to get the msfeeds.h header file. &lt;/P&gt;
&lt;P&gt;Fear not, I've recently &lt;A href="http://blogs.msdn.com/w/archive/2006/09/08/746889.aspx" mce_href="http://blogs.msdn.com/w/archive/2006/09/08/746889.aspx"&gt;posted&lt;/A&gt; on &lt;A href="http://blogs.msdn.com/w" mce_href="http://blogs.msdn.com/w"&gt;my blog&lt;/A&gt; a &lt;A class="" href="http://windowsrssplatform.com/Documents/Microsoft%20Feeds%20API%20-%20Beta%203.zip" mce_href="http://windowsrssplatform.com/Documents/Microsoft%20Feeds%20API%20-%20Beta%203.zip"&gt;MiniSDK&lt;/A&gt; which includes the required headers to use the RSS Platform from C++. I hope this will save you some time and effort. &lt;/P&gt;
&lt;P&gt;-Walter vonKoch&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=766728" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category></item><item><title>Securing feed enclosures</title><link>http://blogs.msdn.com/rssteam/archive/2006/09/20/Securing-feed-enclosures.aspx</link><pubDate>Thu, 21 Sep 2006 01:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:763966</guid><dc:creator>rss</dc:creator><slash:comments>22</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/763966.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=763966</wfw:commentRss><description>&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Greetings, 
&lt;P&gt;I am one of the developers on the RSS team, and to complement &lt;A href="http://blogs.msdn.com/rssteam/archive/2006/09/09/747111.aspx"&gt;Sean’s&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/rssteam/archive/2006/08/07/691248.aspx"&gt;Walter’s&lt;/A&gt; recent postings on feed security, I would like to talk about one topic that didn’t get as much attention in recent discussions on feed security as perhaps it should have - feed enclosures. Enclosures are files “attached” to feed items, commonly used in &lt;A href="http://en.wikipedia.org/wiki/Podcasting"&gt;podcasting&lt;/A&gt; and often automatically downloaded to user’s machine by aggregators. 
&lt;P&gt;In IE7 and the Windows RSS Platform, we have taken a number of precautions to protect users and developers against feeds which may attempt to use enclosures in malicious ways. 
&lt;P&gt;To begin with, when a user subscribes to a feed in IE7 enclosure downloads are turned off by default. Users can easily opt-in to enclosure downloads via the feed properties. 
&lt;P&gt;We also treat enclosures as inherently un-trusted files – in many ways similar to email attachments. We decided not to permit directly-executable (i.e. any file that would execute arbitrary code when double-clicked) or other dangerous files to be downloaded as feed enclosures (there are no common scenarios that require this today, and if it is absolutely necessary, it is possible to wrap an executable file in another format, so that it is no longer directly executable). For this we use the most flexible mechanism possible, the &lt;A href="http://msdn.microsoft.com/security/productinfo/XPSP2/emailhandling.aspx"&gt;Attachment Execution Service&lt;/A&gt; (AES). In simple terms, the AES maintains a list of file extensions that are considered dangerous, including the directly-executable file types, which the RSS platform consults to decide whether or not to block a file. 
&lt;P&gt;Besides blocking the dangerous file types, AES also has a mechanism which allows security programs, such as anti-virus or anti-spyware, to integrate with it, allowing them to inspect files before we make them available to developers or users. &lt;A href="http://www.microsoft.com/athome/security/spyware/software/default.mspx"&gt;Windows Defender&lt;/A&gt; has implemented this integration, so on Windows Vista (or if the user has installed Windows Defender on Windows XP), the user will gain that additional level of protection from the malicious files. 
&lt;P&gt;IE also has a mechanism to block file downloads on a per-zone basis, so before fetching the enclosure we also verify that downloads are allowed for the URL. You can find this per-zone setting in your Internet Options, under Security tab. The simplest way to prevent enclosure downloads from a site is to add it to the Restricted Zone, where downloads are disabled by default. 
&lt;P&gt;If an enclosure download does get blocked for security reasons, this is reported in the feed view as well as through the RSS platform’s &lt;A href="http://windowssdk.msdn.microsoft.com/en-us/library/ms684724.aspx"&gt;LastDownloadError&lt;/A&gt; property. 
&lt;P&gt;Downloaded enclosures are stored in a subfolder of the Temporary Internet Files folder. The full path to the enclosures is different on every machine, preventing malicious feeds or other malicious code from using enclosure downloads as a vector to get known files on the system, as well as ensuring that other applications don’t unknowingly access enclosure files. If an application wants access to the downloaded enclosures it needs to &lt;A href="http://windowssdk.msdn.microsoft.com/en-us/library/ms684730.aspx"&gt;obtain the path from the RSS platform&lt;/A&gt;. 
&lt;P&gt;&lt;B&gt;To summarize&lt;/B&gt;: enclosures are treated as un-trusted files, and the following security mitigations are used: 
&lt;UL&gt;
&lt;LI&gt;Enclosure download is off by-default for all feeds. 
&lt;LI&gt;Directly-executable files are blocked from being downloaded, using the Windows Attachment Execution Service (AES). 
&lt;LI&gt;Anti-virus and Anti-spyware applications (like Windows Defender) can integrate with AES to dynamically block malicious files. 
&lt;LI&gt;Files are stored in a variable location on each PC, ensuring that applications must opt-in to consuming the enclosures.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As before, we want to make sure all aggregator developers know that the tools we are using to make IE and the RSS platform more secure are available for their use as well: 
&lt;UL&gt;
&lt;LI&gt;AES can be utilized through the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iattachmentexecute/iattachmentexecute.asp"&gt;IAttachmentExecute&lt;/A&gt; interface. 
&lt;LI&gt;To determine if file downloads are allowed, applications can invoke the &lt;A href="http://windowssdk.msdn.microsoft.com/en-us/library/ms537136.aspx"&gt;ProcessUrlAction&lt;/A&gt; method to query for &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/workshop/security/szone/reference/constants/urlaction.asp"&gt;URLACTION_SHELL_FILE_DOWNLOAD&lt;/A&gt;. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Once again, we would like to reiterate our commitment to working with the community to improve feed security, and as always we are open for your feedback and questions. 
&lt;P&gt;Thank you, 
&lt;P&gt;Miladin&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Update 9/25/2006: Added a summary paragraph for clarity&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=763966" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Support+in+IE/default.aspx">RSS Support in IE</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/Security/default.aspx">Security</category></item><item><title>More on Feed Security</title><link>http://blogs.msdn.com/rssteam/archive/2006/09/09/More-on-Feed-Security.aspx</link><pubDate>Sat, 09 Sep 2006 03:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:747111</guid><dc:creator>rss</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/747111.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=747111</wfw:commentRss><description>&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Shortly after the &lt;A href="http://www.spidynamics.com/"&gt;SPI Dynamics&lt;/A&gt; presentation&amp;nbsp;that sparked a renewed discussion on feed security in the community last month, &lt;A href="http://www.snellspace.com/"&gt;James Snell&lt;/A&gt; developed a suite of tests (based on an earlier set by &lt;A href="http://www.xn--8ws00zhy3a.com/"&gt;James Holderness&lt;/A&gt;), and generously made them available quietly to aggregator developers. He has now made the tests &lt;A href="http://www.snellspace.com/wp/?p=448"&gt;public&lt;/A&gt;. 
&lt;P&gt;I contacted James last month (via email&amp;nbsp;as he requested)&amp;nbsp;and he pointed me to the test suite, so we could test them against our own security mitigations. We have done full test passes using his test suite. 
&lt;P&gt;The result:&lt;B&gt; &lt;/B&gt;IE7 passed all of the tests&lt;B&gt; &lt;/B&gt;(which means that no script from the feeds executed successfully in IE, and that developers using the RSS platform would not have been vulnerable to the class of attacks in the tests). This confirms SPI Dynamic's findings that IE7 was not vulnerable to the attacks described in their paper. 
&lt;P&gt;I thought it might be useful to use this opportunity to talk about our commitment to security, the defense-in-depth strategy that we have taken, and how other aggregator developers might benefit from the work we have done. 
&lt;P&gt;&lt;I&gt;&lt;/I&gt;
&lt;P&gt;&lt;I&gt;Our commitment to security&lt;/I&gt; 
&lt;P&gt;To put it bluntly, we are&amp;nbsp;keenly aware that IE is a target for security researchers and hackers. We know we cannot afford to be lax in how we approach security. &lt;B&gt;It has therefore been&amp;nbsp;our #1 guiding principle that we would aim for a secure experience first -- sacrificing functionality, if necessary, to achieve it.&amp;nbsp;&lt;/B&gt; 
&lt;P&gt;Long-time readers may remember &lt;A href="http://blogs.msdn.com/rssteam/archive/2005/11/03/489065.aspx"&gt;this&lt;/A&gt; post from last November, in which we announced that we would only support well-formed XML in feeds -- the post was the direct result of a long internal discussion about ways to securely handle malicious feeds. Refusing to handle malformed XML eliminates a large class of potential attacks. 
&lt;P&gt;Walter &lt;A href="http://blogs.msdn.com/rssteam/archive/2006/08/07/691248.aspx"&gt;posted&lt;/A&gt; last month on the details of how IE7 and the Windows RSS Platform protect users and developers from script in feeds. To summarize what he wrote, IE7 employs a (roughly) two-level defense-in-depth strategy: 
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Sanitization&lt;/B&gt;: First, the Windows RSS Platform uses several techniques to strip out script (and several other variations of malicious HTML) before storing the feed content. 
&lt;LI&gt;&lt;B&gt;Restricted Feed View&lt;/B&gt;: Second, &lt;I&gt;just in case&lt;/I&gt; the first step misses something, IE's feed view uses a variation on the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/workshop/security/szone/overview/overview.asp"&gt;Restricted Zone&lt;/A&gt; to show a feed, meaning that no script in a feed will run, even if made it through the previous step.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Each of the two defense-in-depth steps described above require a significant amount of code and investment, but security has been always important enough to us that they where the first major pieces of development that we did when we began implementing the RSS features. &lt;B&gt;In fact, these security features have been in place since&amp;nbsp;the &lt;/B&gt;&lt;A href="http://blogs.msdn.com/rssteam/archive/2006/02/02/522642.aspx"&gt;&lt;B&gt;first public release&lt;/B&gt;&lt;/A&gt;&lt;B&gt; of the IE7 RSS platform features last February&lt;/B&gt;.&lt;B&gt; &lt;/B&gt;
&lt;P&gt;To give you a sense of what is involved -- at one point in development, the sanitization code accounted for fully &lt;I&gt;one-third&lt;/I&gt; of all the code in the RSS platform. The code takes lessons from similar libraries used for years to clean the billions of messages that Hotmail receives, and used for a number of releases in various parts of Office.&amp;nbsp; It includes a number of feed-specific additions (for example, if an element is supposed to&amp;nbsp;only contain text, then we can remove all HTML, not just the script).&amp;nbsp;We validate and sanitize&amp;nbsp;every documented element in each format we support, as well as a set of common RSS extensions. This is all done before an item is ever stored on the system. 
&lt;P&gt;In IE itself, the "restricted feed view" was also a significant challenge because of the interactive nature of a feed view.&amp;nbsp;We designed and developed a feed view that required no javascript for the various controls (subscribing, filtering, sorting, or searching) to work. In fact, the IE7 feed view implementation is effectively that described by Nick Bradbury in his recent &lt;A href="http://nick.typepad.com/blog/2006/09/feed_security_a.html"&gt;post&lt;/A&gt;&amp;nbsp;on feed security (using a script-less page, and manipulating the view from the hosting code). 
&lt;P&gt;&lt;B&gt;The bottom line is that IE takes security &lt;I&gt;very&lt;/I&gt; seriously.&lt;/B&gt; We have invested a great deal of time in hardening IE7 across the board, and nowhere more seriously than in our RSS features. It is an ongoing process, however, and we deeply appreciate the efforts of those in the community who have developed additional security tests and allowed us to use them. 
&lt;P&gt;&lt;I&gt;Looking forward&lt;/I&gt; 
&lt;P&gt;We also look forward to continuing to work with the community to improve&amp;nbsp;the security of all aggregators.&amp;nbsp;To that end, we want to make a couple offers to developers of Windows aggregator developers:&amp;nbsp; 
&lt;UL&gt;
&lt;LI&gt;First,&amp;nbsp;you should feel free to &lt;A href="mailto:teamrss@microsoft.com"&gt;contact us&lt;/A&gt;&amp;nbsp;if you have questions that come up while implementing a fully restricted feed view using the techniques that Nick talked about in his post. If there is enough demand, we may write a blog post on how the IE feed view is built, so people can learn from what we’ve done.&amp;nbsp; 
&lt;LI&gt;Second, the&amp;nbsp;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/FeedsAPI/rss/rss_entry.asp"&gt;Feeds API&lt;/A&gt;&amp;nbsp;includes a utility function called &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/FeedsAPI/rss/reference/ifaces/ifeedsmanager/normalize.asp?frame=true"&gt;Normalize&lt;/A&gt;(), which can be used to gain access to the platform's HTML sanitization code.&amp;nbsp;Contact us if you'd like more information on how you could use this to supplement your own sanitization code.&amp;nbsp; 
&lt;LI&gt;Finally, I’ll make the obvious point that the entire platform is available for your use, including not just the security features described here, but storage and a suite of&amp;nbsp;&lt;A href="http://blogs.msdn.com/rssteam/archive/2006/04/08/571509.aspx"&gt;bandwidth management&lt;/A&gt; features. I understand, of course, that for many existing aggregator developers, switching storage and download engines may be too significant a change in their applications, but I do want to encourage developers of new applications to consider it. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Thanks for reading,&lt;BR&gt;Sean 
&lt;P&gt;PS. Of course, there will be some readers who see this post as a challenge and start looking for exploits in IE's RSS features. If you do find any, please let us know! :)&amp;nbsp;We know that no security is perfect, and that it is an on-going process.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=747111" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Support+in+IE/default.aspx">RSS Support in IE</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/Security/default.aspx">Security</category></item><item><title>Script in Feeds</title><link>http://blogs.msdn.com/rssteam/archive/2006/08/07/Script-in-Feeds.aspx</link><pubDate>Mon, 07 Aug 2006 21:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:691248</guid><dc:creator>rss</dc:creator><slash:comments>21</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/691248.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=691248</wfw:commentRss><description>&lt;P&gt;You might have read the c|net article "&lt;A href="http://news.com.com/Blog+feeds+may+carry+security+risk/2100-1002_3-6102171.html?tag=nl?"&gt;Blog feeds may carry security risk&lt;/A&gt;" which summarizes the &lt;A href="http://www.blackhat.com/html/bh-usa-06/bh-usa-06-speakers.html"&gt;presentation&lt;/A&gt; given by Robert Auger &lt;STRIKE&gt;and Caleb Sima&lt;/STRIKE&gt; of SPI Dynamics. The presentation points to potential dangers of malicious script&amp;nbsp;embedded in feeds. This has sparked &lt;A href="http://www.niallkennedy.com/blog/archives/2006/08/black-hat-prese.html"&gt;some&lt;/A&gt; &lt;A href="http://www.intertwingly.net/blog/2006/08/04/Feeds-As-Attack-Delivery-Systems"&gt;discussion&lt;/A&gt; in the community. &lt;/P&gt;
&lt;P&gt;We think it's good for the RSS community and users that the potential dangers of malicious script in feeds&amp;nbsp;are pointed out and thereby can be addressed by application developers before any attacks materialize. &lt;/P&gt;
&lt;P&gt;In IE7 and the Windows RSS Platform we've implemented several mitigations that specifically address potentially malicious scripts in feeds: &lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;STRONG&gt;Sanitization &lt;BR&gt;&lt;/STRONG&gt;When downloading feeds, the RSS Platform passes the feed through a sanitization process which among other things removes script from HTML fields like the description&amp;nbsp;element. Also, text fields, like the title element, are treated as text and not as HTML, so HTML tags are entity encoded. These steps are performed before the feed content is accessible by application including IE7's Feed View. Further, the feed content is persisted in the Feed Store in the sanitized form, so that applications accessing the feed data benefit from the sanitization. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Feed View in Restricted zone &lt;BR&gt;&lt;/STRONG&gt;The IE7 Feed View displays feeds in the &lt;A href="http://msdn.microsoft.com/workshop/security/szone/overview/overview.asp?frame=true"&gt;Restricted security zone&lt;/A&gt;, no matter where the feed originated, even if for example the feed came from a site in the &lt;EM&gt;Trusted Sites &lt;/EM&gt;zone. By default script is disabled in the &lt;EM&gt;Restricted&lt;/EM&gt; zone. In addition, the Feed View disallows &lt;A href="http://msdn.microsoft.com/workshop/security/szone/overview/overview.asp?frame=true"&gt;URL Actions&lt;/A&gt; including script and active content.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;We designed and implemented the RSS features using the principles of the &lt;A href="http://msdn.microsoft.com/msdnmag/issues/05/11/SDL/"&gt;Secure Development Lifecycle&lt;/A&gt; as embraced by Microsoft.&amp;nbsp; One of the principles is &lt;EM&gt;defense in depth&lt;/EM&gt;. The idea being, even if script somehow were to sneak by the first layer of defense, the impact that the script could have is restricted, if not entirely negated. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Hosting IE in Applications &lt;BR&gt;&lt;/STRONG&gt;The second mitigation above can be of interest to application developers who are hosting MSHTML inside their applications. When using MSHTML to render feeds, we recommend that the host application implements a &lt;A href="http://msdn.microsoft.com/workshop/security/szone/overview/impl_secmanager.asp"&gt;custom security manager&lt;/A&gt;, which allows the application to control which URL Actions are permissible. In order to reduce the attack surface of the application it is advisable to limit the permissible URL Actions to the smallest number possible. &lt;/P&gt;
&lt;P&gt;I hope this will spark even more discussion about security and RSS which will ultimately benefit users. &lt;/P&gt;
&lt;P&gt;- Walter vonKoch &lt;/P&gt;
&lt;P&gt;[Update 8/16] Peter Plamondon of SPI Dynamics provided the &lt;A href="http://www.spidynamics.com/assets/documents/HackingFeeds.pdf"&gt;link&lt;/A&gt; to the paper itself in the comments.&lt;/P&gt;
&lt;P&gt;[Update 8/17] As noted by Sean Kerner in the comments, the presentation was given by Bob Auger solo. I've correct the intro above. Thanks.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=691248" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Support+in+IE/default.aspx">RSS Support in IE</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/Security/default.aspx">Security</category></item><item><title>RSS Platform Beta 3 Changes</title><link>http://blogs.msdn.com/rssteam/archive/2006/07/28/681925.aspx</link><pubDate>Sat, 29 Jul 2006 00:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:681925</guid><dc:creator>rss</dc:creator><slash:comments>25</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/681925.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=681925</wfw:commentRss><description>&lt;P&gt;Jane talked about &lt;A href="http://blogs.msdn.com/rssteam/archive/2006/06/29/650907.aspx"&gt;reading feeds with ease&lt;/A&gt; in IE7 Beta 3. I want highlight what is new in the Windows RSS Platform in Beta 3. &lt;/P&gt;
&lt;P&gt;With the release of Beta 3, the Windows RSS Platform is now &lt;STRONG&gt;API complete&lt;/STRONG&gt;. This means that, barring any serious bug that we must fix, applications written against the Beta 3 API will run unmodified against the final RTM release of the platform. &lt;/P&gt;
&lt;P&gt;Since the Beta 2 release we've made the following changes to the RSS Platform: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Added support for updating all feeds: FeedsManager.AsyncSyncAll() 
&lt;LI&gt;Added support for adding and deleting enclosures from the store. This allows for improved enclosure management and alternate enclosure download outside of the RSS Platform's enclosure download: FeedEnclosure.SetFile() .RemoveFile() and properties .DownloadUrl, .DownloadMimeType 
&lt;LI&gt;Changed signatures of FeedFolderEvents.FolderItemCountChanged and .FeedItemCountChanged as well as FeedEvents.FeedItemCountChanged.&lt;BR&gt;They now indicate which item count property has changed, either the item count or the unread item count of a feed or folder 
&lt;LI&gt;Added FeedItem.Modified to reflect xml element &amp;lt;atom:updated&amp;gt; or &amp;lt;dcterms:modified&amp;gt; 
&lt;LI&gt;Added FeedItem.Guid to reflect xml element &amp;lt;atom:id&amp;gt; or &amp;lt;guid&amp;gt; 
&lt;LI&gt;Split the RSS Platform internally-generated XML elements from the Simple List Extension (SLE) namespace "cf" (http://www.microsoft.com/schemas/rss/core/2005) into their own namespace "cfi" (http://www.microsoft.com/schemas/rss/core/2005/internal) &lt;BR&gt;For example, &amp;lt;&lt;STRONG&gt;cf&lt;/STRONG&gt;:read&amp;gt; is now &amp;lt;&lt;STRONG&gt;cfi&lt;/STRONG&gt;:read&amp;gt;. This new namespace is reserved for the internal use of the RSS platform, so we remove any elements in the "cfi" namespace from incoming feeds before processing them. 
&lt;LI&gt;Final API changes based on feedback, including 
&lt;OL&gt;
&lt;LI&gt;Proper capitalization of certain properties in the automation/dual interfaces which are used by .NET managed code interop 
&lt;LI&gt;Additional FEEDS_DOWNLOAD_ERROR's 
&lt;LI&gt;Renamed Feed.Id to Feed.LocalId 
&lt;LI&gt;Renamed FeedItem.Id to FeedItem.LocalId &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;We want to thank the numerous people that provided feedback in &lt;A href="http://rollerweblogger.org/page/roller?entry=ie7_beta2_available"&gt;blogs&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/rssteam/archive/2006/04/25/582864.aspx#584117"&gt;comments&lt;/A&gt;, emails and newsgroups posts which resulted in the above changes. &lt;/P&gt;
&lt;P&gt;Let me reiterate that we now consider the &lt;STRONG&gt;RSS Platform API complete&lt;/STRONG&gt;. We are not planning to change the API. Applications written against the Beta 3 API will run against the final release of the RSS Platform. &lt;/P&gt;
&lt;P&gt;Note: We are aware that the MSDN documentation does match the latest API changes. We will update it, but don't have an ETA at this time. &lt;/P&gt;
&lt;P&gt;- Walter &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=681925" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category></item><item><title>Events in VB.NET</title><link>http://blogs.msdn.com/rssteam/archive/2006/06/08/Events-in-VB.NET.aspx</link><pubDate>Thu, 08 Jun 2006 08:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:621623</guid><dc:creator>rss</dc:creator><slash:comments>20</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/621623.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=621623</wfw:commentRss><description>&lt;P&gt;We’ve been getting a few questions on how to use RSS Platform events in VB.NET. The problem faced by most inquiries was the fact that the interface returned by the GetWatcher() method call couldn’t be cast to the FeedFolderWatcher or FeedWatcher type. Instead the returned interface can be cast to IFeedFolderEvents_Event or IFeedEvents_Event interface. As done here: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;Imports&lt;/SPAN&gt; Microsoft.Feeds.Interop &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;Module&lt;/SPAN&gt; Module1 &lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;WithEvents&lt;/SPAN&gt; watcher &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR: yellow"&gt;IFeedFolderEvents_Event&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; Main() &lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; fm &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; IFeedsManager = &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; FeedsManager() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; rootFolder &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; IFeedFolder = fm.RootFolder &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;watcher = rootFolder.GetWatcher(FEEDS_EVENTS_SCOPE.FES_ALL, FEEDS_EVENTS_MASK.FEM_FOLDEREVENTS) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;AddHandler&lt;/SPAN&gt; watcher.FeedDownloading, &lt;SPAN style="COLOR: blue"&gt;AddressOf&lt;/SPAN&gt; watcher_Downloading &lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; watcher_Downloading(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; path &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;) &lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;Console.WriteLine(&lt;SPAN style="COLOR: maroon"&gt;"Downloading {0}"&lt;/SPAN&gt;, path) &lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; watcher_DownloadCompleted(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; path &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; err &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; FEEDS_DOWNLOAD_ERROR) &lt;SPAN style="COLOR: blue"&gt;Handles&lt;/SPAN&gt; watcher.FeedDownloadCompleted &lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;Console.WriteLine(&lt;SPAN style="COLOR: maroon"&gt;"Downloaded {0}"&lt;/SPAN&gt;, path) &lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10px; FONT-FAMILY: Verdana"&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Module &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The key is the highlighted part. &lt;/P&gt;
&lt;P&gt;Note: We are aware that the IFeedFolderEvents_Event and IFeedEvents_Event interfaces do not appear in the Object Browser or in IntelliSense. We are looking into it. &lt;/P&gt;
&lt;P&gt;Keep the feedback coming! &lt;/P&gt;
&lt;P&gt;-Walter vonKoch &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=621623" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category></item><item><title>Book talking about the RSS Platform</title><link>http://blogs.msdn.com/rssteam/archive/2006/05/05/Book-talking-about-the-RSS-Platform.aspx</link><pubDate>Fri, 05 May 2006 23:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:591042</guid><dc:creator>rss</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/591042.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=591042</wfw:commentRss><description>Last month, I reviewed the chapter about the Windows RSS Platform in &lt;A href="http://rollerweblogger.org/page/roller"&gt;Dave Johnson&lt;/A&gt;’s upcoming book &lt;A href="http://www.manning.com/dmjohnson/"&gt;RSS and Atom in action&lt;/A&gt;. According to his &lt;A href="http://rollerweblogger.org/page/roller?entry=last_two_chapters_to_production"&gt;blog post&lt;/A&gt;, it’s set for publication in mid-June after which you should be able to pick up a copy. We’re looking forward to it!
&lt;P&gt;- Walter vonKoch&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=591042" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/Community/default.aspx">Community</category></item><item><title>Niall Kennedy, Feed Platforms, and Services</title><link>http://blogs.msdn.com/rssteam/archive/2006/04/12/574764.aspx</link><pubDate>Wed, 12 Apr 2006 11:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:574764</guid><dc:creator>rss</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/574764.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=574764</wfw:commentRss><description>&lt;P&gt;I, for one, am very excited to have Niall Kennedy join the Windows Live team and &lt;A href="http://www.niallkennedy.com/blog/archives/2006/04/niall-kennedy-microsoft.html"&gt;drive the development of an RSS platform&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;For one thing, it's&amp;nbsp;great to have someone with a voice that is as well-respected as his joining Microsoft in any capacity. Just last month, at &lt;A href="http://conferences.oreillynet.com/et2006/"&gt;Etech&lt;/A&gt;, Jane Kim&amp;nbsp;joined Niall onstage for his session on &lt;A href="http://conferences.oreillynet.com/cs/et2006/view/e_sess/9097"&gt;Feeds as a platform&lt;/A&gt;, where she talked about the principles behind why we are building a shared central platform for feed syndication into Windows. It was clear then (and from his &lt;A href="http://www.niallkennedy.com/blog/archives/2006/03/feeds-as-a-plat.html"&gt;excellent&lt;/A&gt; &lt;A href="http://www.niallkennedy.com/blog/archives/2006/03/windows-rss-platform.html"&gt;writeups&lt;/A&gt; on the topic) that he deeply understood the value of feed platforms. &lt;/P&gt;
&lt;P&gt;More generally, it is great to have Windows Live focusing on building an online RSS platform. I have long believed that integration between online services and clients enables far richer experiences than either one alone (in fact, a key goal of our own Windows RSS platform is to make it super-easy for a client developer to integrate online content and services&amp;nbsp;into their application).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On a related topic, I will go out on a limb and say that I can be&amp;nbsp;a bit of a NewsGator &lt;A href="http://www.rassoc.com/gregr/weblog/archive.aspx?post=807"&gt;fanboy&lt;/A&gt;. I've been a NewsGator &lt;STRIKE&gt;Outlook Edition&lt;/STRIKE&gt; Inbox user for years (though these days, I admit, I feel compelled to use IE7's feed reader :) The synchronization support between the RSS platform and NewsGator Online that Greg showed off at Mix06 is just awesome. Greg and the NewsGator&amp;nbsp;team demonstrate exactly what I love about integration between clients and services combining to deliver a great service that makes them both that much better.&lt;/P&gt;
&lt;P&gt;In short, there is no end to the cool things that services enable, both the Windows Live ones and the ones done by folks like Greg and his team. &lt;/P&gt;
&lt;P&gt;Sean &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=574764" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Support+in+IE/default.aspx">RSS Support in IE</category></item><item><title>Windows RSS Platform Download Engine</title><link>http://blogs.msdn.com/rssteam/archive/2006/04/08/571509.aspx</link><pubDate>Sat, 08 Apr 2006 13:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:571509</guid><dc:creator>rss</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/571509.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=571509</wfw:commentRss><description>&lt;P&gt;I wanted to take a couple of minutes to describe how the RSS Platform's download engine works. The behavior can be of interest to feed publishers who might be concerned about scalability as well as to developers and individual users who want to understand how their feeds are being kept up to date.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Features that help publishers manage network usage&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Some of the concerns of feed publishers may have:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Number of hits (a client will&amp;nbsp;hitting the same server many times; update frequencies)&lt;/LI&gt;
&lt;LI&gt;Traffic spikes (many clients hitting the same server at the same time)&lt;/LI&gt;
&lt;LI&gt;Bandwidth (many clients getting large responses from same server; response sizes) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Let's look at ways in which the RSS Platform addresses these issues. First, number of hits from a given client:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Download Schedules &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Each feed in the Common Feed List has its own update schedule (such as "every 4 hours," "Once a week" or "Once a day."). The RSS Platform download engine operates in the background while a user is logged in, and checks each feeds for new content on the appropriate schedules.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Default and Minimum Intervals&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;As popularity of RSS increases, feed publishers may be concerned about the increasing number of hits they get from aggregators checking for feed updates. The Windows RSS Platform takes a fairly conservative approach and sets the default interval for feeds to 24 hours, meaning that by default each feed will be checked no more than once in a 24 hour period. This frequency might not work for every feed type and the user is able to set a custom interval for each feed. Users can also change the default feed interval. &lt;/P&gt;
&lt;P&gt;However, in order to avoid accidental overuse of the server bandwidth, the RSS Platform limits the feed interval to a 15 minute minimum, meaning that the RSS Platform download engine will not perform a scheduled background download more frequently then every 15min. It is possible for an application to request an update at any time (for example, when the a user clicks the Refresh button - or hits F5 - in IE7, IE will ask the RSS Platform to update the feed immediately and will then display the results). However, the RSS Platform background download engine will not automatically update more often than 15 minutes.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;TTL&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The 15 minute minimum interval might not be large enough for some feed publishers and might still result in too many hits. Or a feed publisher might know that there won't be any updates to their feed for a certain time period and they'd like to advise clients to not hit their server more frequently then a specified frequency.&lt;/P&gt;
&lt;P&gt;The RSS Platform download engine respects RSS 2.0's&amp;nbsp;&lt;FONT face="Courier New"&gt;ttl&lt;/FONT&gt; tag (and the&amp;nbsp;&lt;A href="http://web.resource.org/rss/1.0/modules/syndication/"&gt;Syndication extension&lt;/A&gt; for both RSS 1.0 and Atom)&amp;nbsp;by limiting the background downloads to no more often than the publisher specifies. For example, if an RSS 2.0&amp;nbsp;feed has a &lt;FONT face="Courier New"&gt;ttl&lt;/FONT&gt; of 180 (minutes) specified, the download engine will not check for updates more frequently than every 3 hours, even if the user has set the feed interval to 1hr. Note: as with the case of minimum interval, the user is able to manually refresh a feed more frequently then the 3hour&amp;nbsp;&lt;FONT face="Courier New"&gt;ttl&lt;/FONT&gt; defined by the publisher. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The second major concern that publishers have is with several clients hitting their servers at the same time. Let's look at how the RSS platform helps here.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Interval "Salting" &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Suppose the RSS Platform download engine were to check for updates for feed A exactly on the hour every hour. Thanks to Internet time servers, client's clocks tend to be fairly well synchronized. Taken togther, this would make&amp;nbsp;it likely that many clients would make requests to the feed A at exactly the same time. This would lead to traffic spikes which are expensive (at best) for servers to handle, since they would need to scale out to handle the peak traffic.&lt;/P&gt;
&lt;P&gt;In order to minimize the likelihood of severe traffic spikes the RSS Platform introduces a certain amount of randomness to each feed interval (this&amp;nbsp;is referred to as "salting" the interval). After each successful download, it sets the next download time of a feed to be the time of successful download plus the interval plus a random fraction of the interval. The effect is that the download time is, in aggregate, spread out over a period of time, so that requests made to the same server from many clients.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Error back-off interval&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Assume that a download does not successly complete&amp;nbsp;for a particular feed, let's say because of a temporary problem on the server. One approach would be for each client to retry every in a couple of seconds. However, this might make things worse for a server that is already having problems. Over time more and more clients would "join the party" -- constantly trying to get updates from the server making it hard for a server recover. Conversely, if the client were to simply mark the download as failed and wait until the next scheduled download time (hours or days later), it may miss updates if the error was a transient one.&lt;/P&gt;
&lt;P&gt;The RSS Platform uses a progressive back-off algorithm when there are errors getting a feed. Instead of retrying every couple of seconds, it doubles the retry interval on each iteration. On successive failures the retry interval eventually becomes as large or larger then the normal feed interval, at which point the normal interval will used. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The final major concern of publishers is with bandwidth usage. The RSS platform implements several of the recommended&amp;nbsp;features that will help reduce bandwith on servers&amp;nbsp;(e.g. see Nick Bradbury's &lt;A href="http://nick.typepad.com/blog/2004/05/rss_readers_and.html"&gt;post&lt;/A&gt;, or Randy Charles Morin's &lt;A href="http://www.kbcafe.com/rss/rssfeedstate.html"&gt;HowTo&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Conditional GETs&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;As mentioned earlier, bandwidth for RSS feeds will be of increasing concern for publishers. In order to help reduce bandwidth the download engine supports &lt;A href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3"&gt;Conditional GETs&lt;/A&gt; using ETag and If-Modified-Since HTTP headers. If the feed hasn't been updated at all since the last time the client checked, the server can respond with an HTTP &lt;A href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5"&gt;304 (Not Modified)&lt;/A&gt; response. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Delta Encoding&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;In addition to standard conditional GETs the RSS Platform download engine supports Delta Encoding (for details, see Bob Wyman's post "&lt;A href="http://bobwyman.pubsub.com/main/2004/09/using_rfc3229_w.html"&gt;Using RFC 3229 with Feeds&lt;/A&gt;") which allows the server to respond with only the feed items that are new or have been updated, thereby possibly reducing the response significantly. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Compression (gzip encoding)&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Another beneficial feature that the RSS Platform supports is compression. Specifically, the RSS Platform supports &lt;A href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.5"&gt;gzip&lt;/A&gt; encoding of server response bodies which can reduce the response size significantly especially for RSS/XML. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Automatic unsubscribing&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Finally, the RSS Platform implements support for the HTTP response &lt;A href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11"&gt;410 (Gone)&lt;/A&gt;. When this response is received, the platform will automatically change the feed's update schedule to "Never." So when a feed is shut down, the server can inform clients that the feed is gone, so that they stop polling. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;That covers the features of the RSS Platform download engine that address feed publishers primary concerns, and provides options on how to best manage the scalability requirements of their servers.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Features to help manage client network usage&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;But wait, there's more!&amp;nbsp; --- (isn't there always?) :)&lt;/P&gt;
&lt;P&gt;If you're a developer or a user, you might be interested to read about some additional features that the Windows RSS Platform has implemented to help minimize bandwidth usage on the client.&lt;/P&gt;
&lt;P&gt;By default, the RSS Platform background download feature is off for new installations. This means that applications can request manual updates, but otherwise, the content will never be updated. Applications that use the platform should ask the user whether they want background updating, when they first use feed-related features (or at another appropriate time). &lt;/P&gt;
&lt;P&gt;Once enabled, the download engine runs in the background whenever the user is logged into Windows. It is important that the download engine does not adversely impact other applications that the user is running at the same time. Since the download engine runs in the background the user typically won't know when it's started up. It would be very frustrating for the user if, all of a sudden, normal browsing or email downloading became slow for "no apparent reason." To help reduce the likelihood of this, the RSS Platform download engine implements the following set of features:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Parallel Download&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;When the background download engine starts up, it creates a list of all feeds that are ready to be updated. To speed up the process, up to four feeds will be checked in parallel, but no more than that. Too many simultaneous outbound requests might impact foreground Internet usage severely.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Throttled requests&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Once one of the four parallel checks finishes the next feed in the pending list is checked. However, this could lead requests being made in a tight loop which can impact foreground Internet applications. In order to reduce this impact, the download engine throttles the number of requests that will be made in a given time span. &lt;/P&gt;
&lt;P&gt;The engine uses an algorithm that works by gives the engine a "token" once per second up to a maximum of 4 tokens that it can "store up". If it has a "stored up" token then it can make the next request. So assuming that requests finish quickly, then in "steady state" it will make a new request once per second but not more frequently. Obviously, if it has more then one token "stored up" (due to a feed taking a while to download) then it can "burst" and make multiple requests but only up to the max of 4.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope that this overview of some of the features of the Windows RSS Platform download engine provides some information for feed publishers as well as developers and curious users that are interested in how the download engine works, and what impact it may have on the overall network as well client performance. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Even more...&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The inquisitive mind will rightly point out: "Hey Walter, you haven't talked about download of enclosures!" You are correct. I will cover the details of enclosure download by the RSS Platform in a future post. If you have any particular questions about enclosure download you'd like to see answered, let me know in the comments.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;-Walter&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=571509" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/Publisher_2700_s+Guide+Series/default.aspx">Publisher's Guide Series</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/Developer_2700_s+Guide+Series/default.aspx">Developer's Guide Series</category></item><item><title>RSS at Mix06</title><link>http://blogs.msdn.com/rssteam/archive/2006/02/24/538493.aspx</link><pubDate>Fri, 24 Feb 2006 10:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:538493</guid><dc:creator>rss</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/538493.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=538493</wfw:commentRss><description>A quick plug for &lt;A href="http://mix06.com/"&gt;Mix06&lt;/A&gt;&amp;nbsp;&lt;A href="http://blog.mix06.com/blog/rss.aspx"&gt;&lt;IMG src="http://sean.members.winisp.net/posts/icons/feed-icon16x16.png" border=0&gt;&lt;/A&gt; - it's coming up fast (Mar 20-22), so get &lt;A href="http://www.mix06.com/Register.aspx"&gt;registered&lt;/A&gt; quickly. 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;In case you missed it, Mix06 is a conference that’s focused on Internet technologies so, not surprisingly, RSS will be there in force, with a bunch of &lt;A href="https://content.mix06.com/content/sessions.aspx"&gt;sessions&lt;/A&gt; &lt;A href="https://content.mix06.com/rss/SessionsRss.aspx"&gt;&lt;IMG src="http://sean.members.winisp.net/posts/icons/feed-icon16x16.png" border=0&gt;&lt;/A&gt; that feature RSS fairly prominently. &lt;/P&gt;
&lt;P&gt;We'll have a &lt;A href="http://content.mix06.com/content/SessionView.aspx?SessionID=f479de50-4b0e-4ae1-8d9b-8db6c77c3c31"&gt;session&lt;/A&gt; on the &lt;A href="http://blogs.msdn.com/rssteam/archive/2006/02/02/522642.aspx"&gt;Windows RSS Platform&lt;/A&gt;, and you’ll see aspects of the platform show up in several other sessions and keynotes.&lt;/P&gt;
&lt;P&gt;The Channel9 team is doing a series of &lt;A href="http://channel9.msdn.com/Showforum.aspx?forumid=14&amp;amp;tagid=91"&gt;videocasts&lt;/A&gt; &lt;A href="http://channel9.msdn.com/rss.aspx?ForumID=14&amp;amp;Mode=0&amp;amp;sortby=0&amp;amp;sortorder=1&amp;amp;TagID=91"&gt;&lt;IMG src="http://sean.members.winisp.net/posts/icons/feed-icon16x16.png" border=0&gt;&lt;/A&gt; on the Mix sessions. Check them out. &lt;/P&gt;
&lt;P&gt;Members of the RSS team will be there for the entire time, so if you’re planning on being there and you’d like chat, drop us a line. It’s in Las Vegas, so how can it not be fun?&lt;/P&gt;
&lt;P&gt;- Sean&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=538493" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Support+in+IE/default.aspx">RSS Support in IE</category><category domain="http://blogs.msdn.com/rssteam/archive/tags/Presentations/default.aspx">Presentations</category></item><item><title>Windows RSS Platform ala carte </title><link>http://blogs.msdn.com/rssteam/archive/2006/02/09/528195.aspx</link><pubDate>Thu, 09 Feb 2006 05:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:528195</guid><dc:creator>rss</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/rssteam/comments/528195.aspx</comments><wfw:commentRss>http://blogs.msdn.com/rssteam/commentrss.aspx?PostID=528195</wfw:commentRss><description>&lt;P&gt;We just shipped the Windows RSS Platform with the IE7 Beta 2 Preview and questions about the RSS Platform are &lt;A href="http://nick.typepad.com/blog/2006/02/feedback_on_ie7.html"&gt;sprouting&lt;/A&gt; &lt;A href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=f872c4bf-82c7-4222-a733-b9f212e0c3c4"&gt;up&lt;/A&gt;. I wanted to address one of the most common questions first: how should applications can take advantage of platform? &lt;/P&gt;
&lt;P&gt;Within our team we think of 3 major ways of how applications can use the RSS Platform: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Bronze: Integrating with the Common Feed List&lt;/LI&gt;
&lt;LI&gt;Silver: Integrating with the Common Feed List and leveraging the platform’s Download engine&lt;/LI&gt;
&lt;LI&gt;Gold: Leveraging the entire platform: Common Feed List, Download Engine, and Feed Store (including enclosures) &lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;H3&gt;1. Bronze: Integrating with the Common Feed List &lt;/H3&gt;
&lt;P&gt;Applications in this bucket are interested in the list of feeds that the user is subscribed to. For a number of reasons these applications are less interested in leveraging the RSS Platform for downloading feed content. Examples of applications of this type are: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Existing RSS aggregators:&lt;BR&gt;Existing RSS aggregators (like &lt;A href="http://www.bradsoft.com/feeddemon/"&gt;FeedDemon&lt;/A&gt; or &lt;A href="http://www.rssbandit.org/"&gt;RSS Bandit&lt;/A&gt;) typically have a significant investment in their own download engine and feed store. The Common Feed List was designed to make it possible for aggregators to hook into IE’s feed discovery feature – so that whenever a user chooses to subscribe to a feed using the IE subscription features, it’ll show up in the whatever aggregator the user uses.&lt;/LI&gt;
&lt;LI&gt;Browsers or other applications that perform feed discovery and allow users to subscribe to feeds:&lt;BR&gt;Any application on the PC that has the ability to find feeds for the user can add feeds to the Common Feed List if the user chooses to subscribe to those. Other applications can then “find” those feeds via the Common Feed List.&lt;/LI&gt;
&lt;LI&gt;Online feed reading services:&lt;BR&gt;Online feed reading services can provide tools that keep the Common Feed List in sync with other services, enabling these online services to tap into the IE’s feed discovery feature, in the same way that local aggregators do. &lt;/LI&gt;
&lt;LI&gt;Import/export tools (e.g. into OPML or some other format):&lt;BR&gt;IE 7 provides an OPML import/export function for users, but it’s possible for developers use the RSS platform Common Feed List to export the user’s feed list into any format desired. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Applications in this category generally work by reading the Common Feed List, listen for folder and feed events, and adding or deleting feeds to keep a mirror of all or part of the feed list. Outlook 12’s upcoming support for RSS uses this level of integration with the RSS Platform and thereby IE7’s feed discovery.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;H3&gt;2. Silver: Integrating with the Common Feed List and leveraging the platform’s Download Engine &lt;/H3&gt;
&lt;P&gt;An application might choose to become RSS enabled for which the Windows RSS Platform can be helpful. Typically, such an application already has a significant investment in a data store and a user experience built on top of that data store. Even though the application has not previously supported RSS, it would be a major undertaking to implement the same user experience on top of another data store. &lt;/P&gt;
&lt;P&gt;These types of applications are interested not only in the feeds the user is subscribed to but they also want to access to the downloaded content of the subscribed feeds. &lt;/P&gt;
&lt;P&gt;Just two examples are email programs and NNTP newsreaders which have their own stores for items (news items, emails, …) and whose user experience is designed to read and write to their stores. It is often difficult for such applications to re-implement their user experience on top of another data store. &lt;/P&gt;
&lt;P&gt;The RSS platform implements a Download Engine that handles scheduled downloading in the background, parsing of multiple feed formats, and the merge logic of determining whether an item is new or updated, etc. An application can avoid having to implement these building blocks by simply using the RSS Platform APIs including events to copy the feed contents into its own store. New RSS content is then “automatically” available to the application’s users. &lt;/P&gt;
&lt;P&gt;In this way, the application takes advantage of the RSS Platform’s Common Feed List and Download Engine, while maintaining its own data store and UI rendering code. &lt;/P&gt;
&lt;H3&gt;3. Gold: Leveraging the entire RSS platform: Common Feed List, Download Engine, and Feed Store &lt;/H3&gt;
&lt;P&gt;This category applies to applications that have little existing in vestments in their own item store or rendering code, or they simply wish to take full advantage of the functionally the RSS Platform offers. These applications want to become “RSS–enabled” without having to implement an RSS stack. &lt;/P&gt;
&lt;P&gt;These applications implement all of the functionality described in the scenarios above, but do not maintain their own store. They display the feed content directly from the the Feed Store (including enclosures). Many of the new RSS applications that we’ve talked about fit in this bucket. Imagine an RSS screen saver which displays pictures of photo feeds.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;The key point I want to convey is that there is not just ONE way to integrate with the RSS Platform, but there are several. We’ve designed the platform to support several different ways of integration. The integration that you (as a developer) choose depends on the requirements of your application, the existing code base and functionality of your application. Those factors determine if and how deeply you might want to integrate with the RSS Platform. There is no one-size-fits-all for any developer platform, and the RSS platform is no different. Choose Bronze, Silver or Gold, and let me know which choice works for you and why. &lt;/P&gt;
&lt;P&gt;- Walter &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=528195" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/rssteam/archive/tags/RSS+Platform/default.aspx">RSS Platform</category></item></channel></rss>