我正在使用SyndicationFeed从外部网站阅读Rss / Atom供稿
XmlReader reader = XmlReader.Create(RssFeed);
SyndicationFeed feed = SyndicationFeed.Load(reader);
在Rss和原子读取中读取常见安全风险的最佳方法是什么
这里有一些陈述:http://www.cgisecurity.com/rss.html
虽然仍然允许在我的网站上显示Html格式的文字和视频内容?
修改
安全风险:
Feed可能包含恶意标记,如下所示
<?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">
用户在网站上发布Feed必须登录,但任何人都可以注册一个帐户。我想知道允许合法用户读取和显示图像的最佳方式,但不允许恶意内容。
我目前正在查看microsoft antiXss库以帮助解决此问题http://wpl.codeplex.com/
编辑2
我正在mvc web应用程序中将其读入我的控制器,并希望在视图中呈现rss feed。
继承完整的行动结果
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>
答案 0 :(得分:0)
SyndicationFeed
没有直接执行内容,例如执行javascript或显示标记(包括获取图片,例如跨站点请求);因此,您无需使用SyndicationFeed
来避免这些安全风险。
在任何人提供详细建议之前,您必须提供有关如何计划显示标记的更多详细信息。例如它是WPF应用程序,WinForms应用程序,网站等......