應用程序設置的屬性會導致在 HTTP 解析時忽略驗證錯誤。
將 useUnsafeHeaderParsing 設置為 true 可輕松處理 HTTP 頭文件。HTTP 頭文件的驗證規則過于寬松可能會導致易受攻擊的應用程序遭受各種攻擊。
具體來說,如果將此屬性設置為 False,將不再實施以下驗證規則:
在代碼的最后一行使用 CRLF;不允許單獨使用 CR 或 LF。
頭文件名稱不應包含空格。
如果有多個狀態行,則將其他所有狀態行作為不符合標準的頭文件名稱/值對來處理。
狀態行除了包含狀態代碼之外,還必須包含狀態描述。
頭文件名稱不能包含非 ASCII 字符。不管此屬性設置為 True 還是 False,都應該執行此項驗證。
發生協議沖突時,會拋出 WebException 異常,并將狀態設置為 ServerProtocolViolation。如果 UseUnsafeHeaderParsing 屬性設置為 True,則會忽略驗證錯誤。
將此屬性設置為 True 存在安全隱患,因此只能在必須與服務器后向兼容時按照這樣設置。
例 1:在下面的例子中,useUnsafeHeaderParsing 設置為 True。
...
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>
...
[1] Standards Mapping - OWASP Top 10 2004 - (OWASP 2004) A10 Insecure Configuration Management
[2] Standards Mapping - OWASP Top 10 2010 - (OWASP 2010) A6 Security Misconfiguration
[3] Standards Mapping - Security Technical Implementation Guide Version 3 - (STIG 3) APP3230.2 CAT II
[4] Standards Mapping - Security Technical Implementation Guide Version 3.4 - (STIG 3.4) APP3230.2 CAT II
[5] Standards Mapping - FIPS200 - (FISMA) CM
[6] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 113
[7] HttpWebRequestElement.UseUnsafeHeaderParsing 屬性 Microsoft
[8] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 - (PCI 1.2) Requirement 6.3.1.1
[9] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 - (PCI 2.0) Requirement 6.5.1
[10] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 - (PCI 1.1) Requirement 6.5.10