C# HttpCookie vs Response.Cookie
各位开发者好 我对在ASP.NET中使用cookies有点陌生,如果这是一个基本问题,我很抱歉。因此,我的web.config中有以下代码,我一直在使用这些代码来了解cookiesC# HttpCookie vs Response.Cookie,c#,asp.net,security,cookies,C#,Asp.net,Security,Cookies,各位开发者好 我对在ASP.NET中使用cookies有点陌生,如果这是一个基本问题,我很抱歉。因此,我的web.config中有以下代码,我一直在使用这些代码来了解cookies <httpCookies httpOnlyCookies="true" requireSSL="true"/> 现在,当我使用这段代码创建它时,我得到了UserInfo cookie,以这种方式进行保护 protected void btnSubmit_Click(object sender, Ev
<httpCookies httpOnlyCookies="true" requireSSL="true"/>
现在,当我使用这段代码创建它时,我得到了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实例,这就是为什么我希望在这方面有进一步的指导
非常感谢
为什么使用“Response.Cookies”默认为使用
web.config
简单/直接的答案是这是设计的
假设调用时cookie不存在
Response.Cookies["UserInfo"]["userName"] = txtEmail.Text;
cookie是为您创建的,并指定了值,但提供了您在中指定的默认值:
<httpCookies httpOnlyCookies="true" requireSSL="true"/>
但是,如果您按照您已经指出的方式进行实例化并将其添加到集合中,它将使用那些手动设置的值,这在新HttpCookie
的情况下,安全
属性默认值为false
如Cookies集合中所指定
您也可以近距离地亲自查看的代码,以了解更多的“为什么”。您确定确实需要此设置吗
Secure
默认为false,是的,但如果web.config这样说,则建议通过SSL传输所有cookie,除非在代码中明确重写。因此,基本上,即使Secure
最初为false,只要您没有显式运行Secure=false
,您应该会很好。@Andrei有趣。我不知道为什么,但当我使用HttpCookie创建cookie时,“Secure”并没有显示为true。我想可能是通过HttpCookie创建cookie的原因,因为我正在实例化它,但我不确定是否是这样。确切地说,它不是真的,默认值是假的。但关键是,只要代码没有显式设置false
,cookie就会安全,因为web.config这么说。HttpCookie
的实现可能以某种方式检测到显式覆盖
<httpCookies httpOnlyCookies="true" requireSSL="true"/>