На нашем сайте был проведен тест на проникновение, и нам сказали, что на сайте нет безопасных файлов cookie. Это как на Http, так и на Https.
Я пробовал множество примеров, но куки-файлы не отмечены галочкой. Я не знаю, где я иду не так.
Вот что я пробовал в веб-конфигурации:
Solution 1
<httpCookies requireSSL="true"/>
Solution 2
<httpCookies httpOnlyCookies="true" requireSSL="true" />
Solution 3
<httpCookies requireSSL="true" lockItem="true" />
Solution 4
<authentication mode="Forms">
<forms loginUrl="Layout_Simple.cshtml" cookieless="UseCookies" requireSSL="true" path="/Account/Login" />
</authentication>
После попытки каждого из этих файлов cookie все еще не были безопасны
Затем я попробовал код в файле Global.asax.cs. При работе веб-сайта, подобного этому, файлы cookie все еще не были безопасными
protected void Application_EndRequest(object sender, EventArgs e)
{
if (Response.Cookies.Count > 0)
{
foreach (string s in Response.Cookies.AllKeys)
{
if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "_requestverificationtoken" || s.ToLower() == ".aspnet.applicationcookie") || s.ToLower() == "asp.net_sessionid"
{
Response.Cookies[s].Secure = true; Response.Cookies[FormsAuthentication.FormsCookieName].Secure = true;
Response.Cookies["ASP.NET_SessionId"].Secure = true;
}
}
}
}
Я также попытался добавить приведенную ниже строку в файл Startup.Auth.cs, но из-за этого веб-сайт больше не входил.
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new Microsoft.Owin.PathString("/Account/Login"),
CookieSecure = Microsoft.Owin.Security.Cookies.CookieSecureOption.Always