【发布时间】:2016-01-03 16:35:12
【问题描述】:
各位开发者您好,
我对在 ASP.NET 中使用 cookie 有点陌生,如果这是一个基本问题,我深表歉意。因此,我在 web.config 中有以下代码,我正在玩弄这些代码以了解 cookie。
<httpCookies httpOnlyCookies="true" requireSSL="true"/>
现在这是我的问题。我以两种方式创建了一个 cookie(我需要保护它们)。
我保护它的一种方法是使用此代码-
protected void btnSubmit_Click(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("UserInfo");
cookie.Secure = true; // secure the cookie
cookie["username"] = txtEmail.Text;
if (txtEmail.Text != "")
{
Response.Cookies.Add(cookie);
}
Response.Redirect("WebForm2.aspx");
}
现在,当我使用此代码创建它时,我得到了 UserInfo cookie,以这种方式得到了很好的保护。
protected void btnSubmit_Click(object sender, EventArgs e)
{
Response.Cookies["UserInfo"]["userName"] = txtEmail.Text;
}
现在这是我的问题。为什么使用“Response.Cookies”默认使用web.config中的设置?为什么当我使用 HttpCookie 创建 cookie 时,我必须通过在 CS 代码中将其设置为 true 来保护它?我最好的猜测是,因为我正在创建一个 HttpCookie 的实例,这就是原因,但我想要进一步的方向。
非常感谢!
【问题讨论】:
-
你确定这个设置真的需要吗?
Secure默认为 false,是的,但 the doc 建议如果 web.config 如此说明,则所有 cookie 都通过 SSL 传输,除非在代码中明确覆盖。所以基本上即使Secure最初是错误的,只要你不明确运行Secure = false你应该没问题。 -
@Andrei 有趣。我不知道为什么,但是当我使用 HttpCookie 创建 cookie 时,“安全”并没有显示为真的。我想也许通过 HttpCookie 创建 cookie 可能是原因,因为我正在实例化它,但我不确定是否是这种情况。
-
没错,它不会是真的,默认值是假的。但关键是只要您的代码没有明确设置
false,cookie 将是安全的,因为 web.config 是这样说的。HttpCookie的实现可能会以某种方式检测显式覆盖
标签: c# asp.net security cookies