繁体   English   中英

标题操作的 HP Fortify Cookie 错误

[英]HP Fortify Cookie Error of Header Manipulation

我正在使用 Fortify 扫描我的代码。 它正在识别错误​​“标题操作:Cookies”。 此外,它还说“在 HTTP cookie 中包含未经验证的数据”。 我的代码如下。

String cookieName = "Foo";
System.Text.RegularExpressions.Regex rgx = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9 -]");
String FullCookieName = ".OmniPro" + cookieName;
FullCookieName = rgx.Replace(FullCookieName, "");
HttpCookie oldCookie = Request.Cookies[FullCookieName] ;
if ( oldCookie != null )
{
    oldCookie.Expires = DateTime.Now.AddDays( -1 );
    Response.Cookies.Add( oldCookie );
}

该错误在“Cookies.Add”上标识。 我的目的是让旧 cookie 过期。 我发现没有办法让 Fortify 开心。 任何帮助,将不胜感激。

问题是取回旧的 cookie,然后将其送回。 Cookie 不被视为 Fortify 的可信输入,因为它们可由用户编辑。 在将 cookie 添加到响应之前,您可能希望验证 cookie 中的内容。 即使您这样做,Fortify 仍可能会报告该问题。 在进行输入验证时,Fortify 本质上不信任您的验证。 您必须创建自定义规则才能做到这一点。 一旦您认为输入已充分净化,您也可以抑制问题。

Fortify 在https://protect724.hp.com上有一个用户社区,该社区也受到支持人员的监控。 您可能会在那里获得更快的答案。

我将代码更改为如下所示,Fortify 接受了它。

String cookieName = "Foo"
System.Text.RegularExpressions.Regex rgx = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9 -]");
String FullCookieName = ".OmniPro" + cookieName;
HttpCookie oldCookie = Request.Cookies[FullCookieName];
if (oldCookie != null)
{
    String DeleteCookieName = rgx.Replace(FullCookieName, "");
    HttpCookie expiredCookie = new HttpCookie(DeleteCookieName) { Expires = DateTime.Now.AddDays(-1) };
    HttpContext.Current.Response.Cookies.Add(expiredCookie); // overwrite it
}

谢谢

在我看来,扩展名.OmniPro有一个非常具体的用例,我不怀疑。 但是,正则表达式似乎不是必需的。

更简单的代码通过 HP 的 Fortify 扫描以防止标题操作:

HttpCookie expiredCookie = new HttpCookie(DeleteCookieName)
  { Expires = DateTime.Now.AddDays(-1) };
HttpContext.Current.Response.Cookies.Add(expiredCookie); // Overwrite cookie.

此外,对于这些立即过期的 cookie(请参阅DateTime.Now.AddDays(-1) )我有点怀疑,如果它不是误报,因为这个 cookie 永远无法获取 - 它只是在它之前过期创建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM