رعایت نکات امنیتی در برنامه های وب

بحث امنیت از اون بحث‌های جذاب و چند وجهی است که پرداختن به اون نیاز به زمان و دانش زیادی داره، فرض رو فعلاً بر این قرار میدیم که در برنامه تمام نکات لازم رو رعایت کردین، یه چندتا نکته دیگه هم باید رعایت بشه.

1- استفاده از cookieهای با خاصیت samesite:

HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashed)
{
	HttpOnly = true,
	Expires = DateTime.Now.AddMinutes(Convert.ToInt32(expiration.ItemValue)),
	Name = ".SITE_AUTH",
	SameSite = SameSiteMode.Strict
};

2- حذف “X-Powered-By از Http Response Header:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <remove name="X-Powered-By" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

3- حذف X-AspNetMvc-Version:

protected void Application_Start()
{
    MvcHandler.DisableMvcResponseHeader = true;
}

4- حذف X-AspNet-Version:

<system.web>
  <httpRuntime enableVersionHeader="false" />
</system.web>

5- ایجاد nosniff بر روی X-Content-Type-Options:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options"/>
        <add name="X-Content-Type-Options" value="nosniff"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>

6- جلوگیری از TRACE یا TRACK:
برای اینکه هکر کوکی‌های HttpOnly ما را دور نزند باید دو عملگر TRACE و TRACK را غیرفعال کنیم:

<system.webServer>
  <security>
    <requestFiltering>
      <verbs>
        <add verb="TRACE" allowed="false" />
        <add verb="TRACK" allowed="false" />
      </verbs>
    </requestFiltering>
  </security>
</system.webServer>