ServiceStack元数据页面上的链接是否应该被编码?
问题描述:
我们使用的扫描仪工具报告了安全问题。它在ServiceStack.Metadata.IndexOperationsControl.Render()
内监测GET /metadata
的响应并报告没有验证或编码的响应。具体来说,抱怨网址。这里是它所关心的片段:ServiceStack元数据页面上的链接是否应该被编码?
<h3>Plugin Links:</h3><ul><li><a href="https://mysitedomain/swagger-ui/">Swagger UI</a></li></ul> </div> <p> </p>
我可能会泛化太多。它看起来像问题是,最终,ServiceStack调用System.Web.UI.HtmlTextWriter.Write()
,而不是System.Web.UI.HtmlTextWriter.WriteEncodedText()
在这里
var pluginLinks = metadata != null && metadata.PluginLinks.Count > 0
? new ListTemplate
{
Title = metadata.PluginLinksTitle,
ListItemsMap = ToAbsoluteUrls(metadata.PluginLinks),
ListItemTemplate = @"<li><a href=""{0}"">{1}</a></li>"
}.ToString()
: "";
链接插头应的URL来这里编码?
答
没有安全隐患,元数据页面上的链接是由编译时静态已知的插件定义的,即它们从不嵌入未知的用户定义链接。