Solutions for weakness
WebConfig 設定¶
秉持著「最小化暴露」與「強化瀏覽器安全性行為」的精神,建立應用程式的第一道防線
隱藏伺服器資訊¶
<system.web>
<httpRuntime targetFramework="*" enableVersionHeader="false" />
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<remove name="X-AspNetMvc-Version" />
</customHeaders>
</httpProtocol>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
主動關閉目錄瀏覽¶
<configuration>
<directoryBrowse enable="false"/>
</configuration>
避免點擊劫持(Clickjacking)¶
關鍵字:X-Frame-Options header missing
確保網站的內容不會遭惡意嵌入到其他網站,有 DENY、SAMEORIGIN 和 ALLOW-FROM 三種值:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="DENY" />
</customHeaders>
</httpProtocol>
</system.webServer>
防護 XSS Attacks¶
關鍵字:X-Xss-Protection、Content-Security-Policy
現在大多使用 Content-Security-Policy 的設定限制資源來源以達到此效果
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="default-src 'self' data:; img-src 'self' data: ; script-src 'self'" />
</customHeaders>
</httpProtocol>
</system.webServer>
Content Sniffing¶
防止瀏覽器嘗試猜測並執行非預期類型的檔案
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>
</system.webServer>
來源政策¶
控制跳轉頁面時是否攜帶來源網址資訊,避免瀏覽紀錄被追蹤
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Referrer-Policy" value="No-referrer" />
</customHeaders>
</httpProtocol>
</system.webServer>
HTTP Strict Transport Security¶
關鍵字:HTTP Strict Transport Security (HSTS) not implemented
除了設定 Rewrite URL 和 Redirect URL 外,直接藉由 Http Header 的方式強制瀏覽器僅使用 HTTPS 與伺服器通訊
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
<outboundRules>
<rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000;includeSubDomains;preload" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
防止 Cookie 被竊取¶
關鍵字:Cookie without HttpOnly Flag Set、Cookies without Secure flag Set
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true"/>
</system.web>
GCB 套用¶
解決 SWEET32 生日攻擊漏洞¶
如 CVE-2016-2183 中所述,作為 SSL/TLS 通訊協定一部分的 DES/3DES 密碼中的錯誤,會導致 OpenSSL 容許遠端攻擊者取得機密性資訊。透過擷取 SSL/TLS 伺服器與用戶端之間的大量已加密資料流量,可以進行中間人攻擊的遠端攻擊者,可能會惡意探索此漏洞,以回復純文字資料及取得機密性資訊。此漏洞稱為 SWEET32 生日攻擊。
可以透過使用 IISCrypto 禁用 Triple DES 168 修復此一弱點。