跳轉到

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

確保網站的內容不會遭惡意嵌入到其他網站,有 DENYSAMEORIGINALLOW-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 URLRedirect 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 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 修復此一弱點。