我正在使用 SyndicationFeed 阅读来自外部站点的 Rss / Atom 提要
XmlReader reader = XmlReader.Create(RssFeed);
SyndicationFeed feed = SyndicationFeed.Load(reader);
在阅读 Rss 和 atom 提要时避免常见安全风险的最佳方法是什么
这里有一些说明:http ://www.cgisecurity.com/rss.html
同时仍然允许在我的网站上显示 Html 格式的文本和视频内容?
编辑
安全风险:
提要可能包含恶意标记,如下所示
<?xml version="1.0" encoding="ISO-8859-1"?> <rss version="2.0"> <channel>
<title> <script>alert('Channel Title')</script>
</title>
<link>http://www.mycoolsite.com/
</link>
<description> <script>alert('Channel Description')</script> </description>
<language>en-us
</language>
<copyright>Mr Cool 2006</copyright>
<pubDate>Thu, 22 Jun 2006 11:09:23 EDT</pubDate> <ttl>10</ttl> <image>
<title> <script>alert('Channel Image Title')</script>
</title>
<link>http://www.mycoolsite.com/</link>
<url>http://www.mycoolsite.com/logo.gif</url>
<width>144</width>
呈现时,Javascript 代码将运行并显示警报框。此内容可能是恶意的,
跨站请求伪造
攻击者可以利用跨站点请求伪造(CSRF 或 XSRF)攻击例如:
<img
src="http://www.mystocktradersite.com/transaction.asp?sell=google&buy=Microsoft&nums
hares=1000">
在网站上发布提要的用户必须登录,但任何人都可以注册一个帐户。我想知道允许合法用户让他们的 Rss / atom 提要读取和显示图像的最佳方法,但不允许恶意内容。
我目前正在查看 microsoft antiXss 库来帮助解决这个http://wpl.codeplex.com/
编辑 2
我正在 mvc Web 应用程序中将其读入我的控制器,并希望在视图中呈现 rss 提要。
这是完整的操作结果
public PartialViewResult Blog(int id, string blogId)
{
var project = _projectRepository.GetById(id);
XmlReader reader = XmlReader.Create(project.RssFeed);
SyndicationFeed feed = SyndicationFeed.Load(reader);
//select out a collection of anonymous types from RSS feed
var blog = (from rss in feed.Items
where rss.Id == blogId
select new VmProjectBlog
{
Id = rss.Id,
Title = rss.Title.Text,
PublishedDate = rss.PublishDate.DateTime,
Description = rss.Summary.Text
}).FirstOrDefault();
return PartialView("_Blog", blog);
}
这是视图
<div id="summary">
<div class="full blog">
<div class="article large">
<div class="title">
<h2>@Model.Title</h2>
</div>
<div class="post">
@Html.Raw(Model.Description)
</div>
</div>
<a class="button-lrg-blue" href="@Model.Link"><span>Read full blog ...</span></a>
</div>
</div>