我特别使用以下代码设置cookie:
System.Web.HttpCookie cookie = new System.Web.HttpCookie("MyCookie", accessToken)
{
Expires = DateTime.UtcNow.AddDays(30),
HttpOnly = false,
Domain = ".mywebsite.com",
Path = "/"
};我的web.config上也有以下条目:
<httpCookies httpOnlyCookies="true" requireSSL="true" lockItem="true"/>直到今天,所有的cookie都被设置为HttpOnly,除了MyCookie,这正是我想要的。
但今天发生了一些奇怪的事情。我用相同的代码部署了我的web应用程序,MyCookie被设置为HttpOnly。
所以我现在有两种不同的装置,有不同的行为。
因此,我的问题是:是否有任何其他配置或OS / IIS版本可以覆盖cookie创建方法设置?
谢谢
发布于 2017-12-12 17:47:42
HttpOnly依赖于浏览器,但对于大多数常见的浏览器来说是可用的.对于.NET世界,可以像上面针对cookie那样设置它。但是,如果您使用的是.NET芯,则除非您正在使用IIS,否则web.config中不再存在下面提到的默认设置,因此必须在每个cookie上设置它。
考虑到下面的内容与代码中的内容一致,我会再次检查在设置cookie之后,没有任何其他东西正在修改您的cookie。您是否通过在上面的cookie定义之后添加调试代码来检查HttpOnly的值是否为真?我还会尝试在一个新变量中检索cookie,以确保它也是相同的。
摘自OWASP网站:
默认情况下,.NET 2.0为-会话ID -窗体身份验证cookie设置HttpOnly属性
在.NET 2.0中,也可以通过HttpCookie对象为所有自定义应用程序cookies设置HttpOnly
在system.web/httpCookies元素中通过web.config
<httpCookies httpOnlyCookies="true" …> 或以编程方式
C#代码:
HttpCookie myCookie = new HttpCookie("myCookie");
myCookie.HttpOnly = true;
Response.AppendCookie(myCookie);VB.NET代码:
Dim myCookie As HttpCookie = new HttpCookie("myCookie")
myCookie.HttpOnly = True
Response.AppendCookie(myCookie)但是,在.NET 1.1中,您必须手动执行此操作,例如,
Response.Cookies[cookie].Path += ";HttpOnly";https://stackoverflow.com/questions/47777816
复制相似问题