加上 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