CheckMarx 中等严重性警告 - 启动时的 HttpOnly cookie

sas*_*alm 6 c# secure-coding checkmarx asp.net-core

CheckMarx 正在标记一个错误,对我来说这看起来像是误报。我们的应用程序是用 C# 编写的,并使用 ASP.NET Core。

错误是:

Web 应用程序的 Startup 方法在 Startup.cs 的第 22 行创建一个 cookie Startup,并在响应中返回它。但是,应用程序未配置为自动设置具有“httpOnly”属性的 cookie,并且代码未显式将此添加到 cookie。

这是第 22 行:

public class Startup
Run Code Online (Sandbox Code Playgroud)

我们确实正确设置了 cookie 策略:

app.UseCookiePolicy(new CookiePolicyOptions
{
    HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always
});
Run Code Online (Sandbox Code Playgroud)

但 CheckMarx 仍在标记此警告。而且我不认为我的 Startup 类会创建一个名为 Startup 的 cookie。

我在这里找到了类似的帖子(未答复) - https://github.com/Azure/azure-functions-vs-build-sdk/issues/469

那么这是误报吗?我如何让 CheckMarx 停止标记它?

小智 5

对于.NET Core 3.1,我通过在 Startup 类中配置服务然后使用 CookiePolicy 中间件修复了此漏洞警告。

在ConfigureServices函数中:

services.Configure<CookiePolicyOptions>(options =>
{
    options.Secure = CookieSecurePolicy.Always;
});
Run Code Online (Sandbox Code Playgroud)

在配置功能中:

app.UseCookiePolicy();
Run Code Online (Sandbox Code Playgroud)

这也可以用于修复中间件中的 HttpOnlyPolicy 漏洞,例如:

services.Configure<CookiePolicyOptions>(options =>
{
    options.HttpOnly = HttpOnlyPolicy.Always;
    options.Secure = CookieSecurePolicy.Always;
});
Run Code Online (Sandbox Code Playgroud)

请记住对中间件使用正确的顺序。您可以参考ASP.NET Core 中间件文档来了解更多信息并获取一些示例。


sas*_*alm 4

删除这些警告的唯一方法是将 Startup 类重命名为其他名称,例如 Startup123。

没有什么可以消除警告,我认为这绝对是误报。