我使用以下文章做了一个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
,则存在加密和解密。
这在处理能力上有多昂贵?
答案 0 :(得分:1)
Http仅cookie不暴露给客户端脚本,当然浏览器可以访问它,因为它应该将其发送回服务器。
您可以像其他Cookie一样使用Asp.net中的Request对象访问它。
设置“安全”属性意味着Cookie只能在安全连接(即https)中使用,因此在http下无法使用。加密/解密的开销并非特定于cookie,实际上,它发生在TCP级别的所有数据传输中,并且开销与任何其他https连接一样(考虑到当今的服务器,并没有那么多)。 Cookie的大小或数量会影响开销,因为在任何调用中都将传输数据。