0

我使用文章做了一个 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,则有加密和解密。

这在处理能力方面的成本是多少?

4

1 回答 1

1

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

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

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

于 2019-01-16T13:03:43.117 回答