ServiceStack 元数据页面上的链接是否应该编码?
Should the links on ServiceStack metadata page be encoded?
我们使用的扫描仪工具报告了一个安全问题。它监视了 ServiceStack.Metadata.IndexOperationsControl.Render()
中来自 GET /metadata
的响应,并报告了未经验证或编码的响应。具体来说,抱怨 URL。这是它关注的片段:
<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 应该在此处编码吗?
没有安全问题,元数据页面上的链接由编译时静态已知的插件定义,即它们从不嵌入未知的用户定义链接。
我们使用的扫描仪工具报告了一个安全问题。它监视了 ServiceStack.Metadata.IndexOperationsControl.Render()
中来自 GET /metadata
的响应,并报告了未经验证或编码的响应。具体来说,抱怨 URL。这是它关注的片段:
<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 应该在此处编码吗?
没有安全问题,元数据页面上的链接由编译时静态已知的插件定义,即它们从不嵌入未知的用户定义链接。