【发布时间】:2013-05-06 13:14:09
【问题描述】:
在安全审核之后,我试图在我们的 MVC 应用程序中强制创建安全的 HttpCookie。我想出了一个帮助类来创建它们:
public static class CookieHelper
{
/// <summary>
/// Create Cookie.
/// </summary>
/// <param name="name">Cookie name.</param>
/// <param name="value">Cookie value.</param>
/// <returns>A cookie.</returns>
public static HttpCookie CreateSecureCookie(string name, string value)
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentNullException("name");
}
var cookie = new HttpCookie(name, value);
cookie.Secure = true;
return cookie;
}
}
我在我们目前正在创建 cookie 的地方加入了这个,所以我们现在没事了。但是,我们是一个成长中的组织,很多人将在代码库中工作,所以我有点担心人们将来会在这个助手类之外创建新的 cookie。
有没有一种方法可以在 Resharper、StyleCop 或其他任何东西中设置一个规则来阻止新 HttpCookie() 的实例化,除了助手类?
【问题讨论】:
-
您可以将 CookieHelper 和 HttpCookie 放在自己的程序集中,并将 HttpCookie 标记为私有。因此,如果有人想使用它,您必须引用该程序集,并且只能通过 Helper 访问它,只要他们不在该程序集中实现
-
@derape -
HttpCookie是System.Web的一部分。 -
@Levitikon - 代码审查应该抓住不使用你的包装类的人。
-
或者你可以很容易地创建
StyleCop规则来报告它,然后在 CI 中轻松地捕获它。不会阻止实例化,但您会立即知道何时有人会这样做,并且能够解决和讨论这个问题 -
谢谢@Pako,这应该可以解决问题!
标签: c# .net asp.net-mvc httpcookie