HttpOnly cookie在aspx上的行为

时间:2019-01-16 12:22:39

标签: asp.net cookie-httponly

我使用以下文章做了一个HttpOnly cookie:

https://docs.microsoft.com/pt-br/dotnet/api/system.web.httpcookie.httponly?view=netframework-4.7.2

HttpOnly cookie的创建如下:

// Create an HttpOnly cookie.
HttpCookie myHttpOnlyCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());

// Setting the HttpOnly value to true, makes
// this cookie accessible only to ASP.NET.

myHttpOnlyCookie.HttpOnly = true;
myHttpOnlyCookie.Secure = true;
myHttpOnlyCookie.Name = "MyHttpOnlyCookie";
Response.AppendCookie(myHttpOnlyCookie);

// Show the name of the HttpOnly cookie.
Response.Write(myHttpOnlyCookie.Name);

好的,我看到这篇文章说: https://latesthackingnews.com/2017/07/03/what-is-httponly-cookie/

  

HttpOnly告诉浏览器保存cookie而不显示它   客户端脚本。另一方面,安全标志会强制   浏览器通过加密通道(例如HTTPS)发送Cookie,   停止监听,尤其是在使用HTTPS连接时   通过SSLStrip等工具降级为HTTP。

好吧

但是我在.aspx网页中做了一个仅HTTP的cookie,但是我可以通过Chrome的cookie文件看到它:

C:\Users\<user>\AppData\Local\Google\Chrome\User Data\Default\Cookie

我设置标志:

    myHttpOnlyCookie.HttpOnly = true;
    myHttpOnlyCookie.Secure = true;

问题1-,如果HttpOnly告诉浏览器保存cookie而不将其显示在客户端脚本中,为什么我可以在Chrome的cookie文件中访问cookie的名称?

问题1.1-是否可以访问其内容,但不使用脚本?

问题2 这很愚蠢,但是我无法使用以下代码通过aspx访问HttpOnly cookie:

HttpContext.Current.Request.Cookies["test_MyHttpOnlyCookietest"]

这是通过服务器端访问它的唯一方法吗?

问题3 :当我放置myHttpOnlyCookie.Secure = true;时 我无法通过非HTTPS连接进行访问-是吗?仅使用https就可以访问它吗?

问题4 :如果我使用myHttpOnlyCookie.Secure = true,则存在加密和解密。

这在处理能力上有多昂贵?

1 个答案:

答案 0 :(得分:1)

Http仅cookie不暴露给客户端脚本,当然浏览器可以访问它,因为它应该将其发送回服务器。

您可以像其他Cookie一样使用Asp.net中的Request对象访问它。

设置“安全”属性意味着Cookie只能在安全连接(即https)中使用,因此在http下无法使用。加密/解密的开销并非特定于cookie,实际上,它发生在TCP级别的所有数据传输中,并且开销与任何其他https连接一样(考虑到当今的服务器,并没有那么多)。 Cookie的大小或数量会影响开销,因为在任何调用中都将传输数据。