Fortify告诉我,我有一个关键问题是XSS漏洞。
摘要: 跨站点脚本:反映(输入验证和表示,数据流)
FooController.cs中的方法DoFoo()将未经验证的数据发送到第112行的Web浏览器,这可能导致浏览器执行恶意代码。
它不喜欢此方法返回的内容
return new JsonResult
{
Data = new
{
NameChanged = nameChanged,
DatabaseUpdated = true,
HasOpenAccount = contact.HasOpenAccount
}
};
这三个值都是布尔值。最后一个(contact.HasOpenAccount
)是一个可以为空的布尔值。这是Fortify不喜欢的(我认为因为contact
是从javascript传入的对象)。
我与HttpUtility.HtmlEncode
混淆了,将其添加到HasOpenAccount
行会将Fortify问题从关键问题更改为中等问题(验证效果不佳)。
我可以忍受这一点,但这似乎并不是真正的问题。可以为空的布尔值如何容易受到恶意攻击?这是一种可能性,还是Fortify疯了?
更新
我通过更改
来修复此问题 HasOpenAccount = contact.HasOpenAccount
到
HasOpenAccount = contact.HasOpenAccount ?? false
在null时返回false。这完全解决了Fortify问题。显然它不喜欢nullables?我的原始问题仍然存在,这甚至是一个真正的问题吗?
答案 0 :(得分:0)
如果他们都是布尔值,那么只需评论这是误报,然后将其标记为“不是问题”(和/或禁止它)。