สำหรับผู้ที่ใช้ ASP.NET MVC คุณสามารถใช้สิ่งต่อไปนี้เพื่อบังคับ SSL / TLS ผ่าน HTTPS ทั่วทั้งไซต์ได้สองวิธี:
วิธีที่ยาก
1 - เพิ่ม RequireHttpsAttribute ไปยังตัวกรองส่วนกลาง:
GlobalFilters.Filters.Add(new RequireHttpsAttribute());
2 - บังคับโทเค็นการป้องกันการปลอมแปลงให้ใช้ SSL / TLS:
AntiForgeryConfig.RequireSsl = true;
3 - ต้องการให้คุกกี้ต้องใช้ HTTPS เป็นค่าเริ่มต้นโดยการเปลี่ยนไฟล์ Web.config:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" />
</system.web>
4 - ใช้แพ็คเกจ NWebSec.Owin NuGet และเพิ่มบรรทัดของรหัสต่อไปนี้เพื่อเปิดใช้งาน Strict Transport Security ทั่วทั้งไซต์ อย่าลืมที่จะเพิ่มคำสั่ง Preload ด้านล่างและส่งเว็บไซต์ของคุณไปยังเว็บไซต์ HSTS Preload ข้อมูลเพิ่มเติมที่นี่และที่นี่ โปรดทราบว่าหากคุณไม่ได้ใช้ OWIN จะมีวิธี Web.config ที่คุณสามารถอ่านบนเว็บไซต์NWebSec
// app is your OWIN IAppBuilder app in Startup.cs
app.UseHsts(options => options.MaxAge(days: 30).Preload());
5 - ใช้แพ็คเกจ NWebSec.Owin NuGet และเพิ่มบรรทัดของรหัสต่อไปนี้เพื่อเปิดใช้งานการปักหมุดกุญแจสาธารณะ (HPKP) ทั่วทั้งไซต์ ข้อมูลเพิ่มเติมที่นี่และที่นี่
// app is your OWIN IAppBuilder app in Startup.cs
app.UseHpkp(options => options
.Sha256Pins(
"Base64 encoded SHA-256 hash of your first certificate e.g. cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=",
"Base64 encoded SHA-256 hash of your second backup certificate e.g. M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE=")
.MaxAge(days: 30));
6 - รวมรูปแบบ https ใน URL ใด ๆ ที่ใช้ ส่วนหัว HTTP นโยบายความปลอดภัยเนื้อหา (CSP)และSubresource Integrity (SRI)เล่นได้ไม่ดีเมื่อคุณเลียนแบบโครงร่างในเบราว์เซอร์บางตัว เป็นการดีกว่าที่จะมีความชัดเจนเกี่ยวกับ HTTPS เช่น
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.4/bootstrap.min.js"></script>
วิธีที่ง่าย
ใช้เทมเพลตโครงการASP.NET MVC Boilerplate Visual Studio เพื่อสร้างโครงการที่มีทั้งหมดนี้และมีอยู่แล้วภายในอีกมากมายคุณยังสามารถดูรหัสบนGitHubได้