[ASP.NET Core] 加上 HttpOnly=true 防止XSS攻擊竊取cookie

加上 HttpOnly=true 防止XSS攻擊竊取cookie

1.在範例中新增了兩個cookie,分別設定 HttpOnly=true 及 false

            Response.Cookies.Append("IsOnly", "value", new CookieOptions()
            {
                HttpOnly = true
            });
            Response.Cookies.Append("NotOnly", "value", new CookieOptions()
            {
                HttpOnly = false
            });

2.可以看到這兩個cookie的http only

3.接著執行javascript,取得所有的cookie,會發現只有http only=false 的cookie被抓出來

4.這樣就可以簡單的防止使用者的 cookie 遭到XSS竊取

5.並且在CookieOptions中,也有另外兩個屬性可以讓我們做設定,增加應用的安全性

  • 在本篇提到的 HttpOnly
  • 限定 Httpds 的 Secure
  • 跨網站相關的 SameSite
            Response.Cookies.Append("IsOnly", "value", new CookieOptions()
            {
                Secure = true,
                SameSite = SameSiteMode.Strict,
                HttpOnly = true
            });

在先前的文章中,使用到了cookie來完成簡單的登入驗證功能,在這個方式中.Net Core預設會將該 cookie 加上httpOnly=true,若有需要也可以在 Startup 中做相關設定

            services.AddAuthentication(options =>
                    {
                        options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                    })
                    .AddCookie(options =>
                    {
                        options.Cookie.HttpOnly = true;
                    });

Microsoft Docs Work with SameSite cookies in ASP.NET Core

Wiki XSS

OWASP HttpOnly