“Unsafe” here is a bit extreme; I would call this setting differently. The problem occurs when the ill-fated servers issue headers that do not exactly match HTTP RFC. For example, the RFC says that CR characters must be followed by an LF character, so if there is no LF, you will get execution if you do not allow “unsafe” headers.
In practice, many HTTP clients ignore these minor violations in order to talk to as many servers as possible. Therefore, your browser or RSS reader never complains about “insecure” headlines. Even if the headers are fictitious, .NET client libraries are reliable enough so that, for example, you do not break your server if the attacker did not allow the line feed. :-) Thus, there is no big security problem here, unless (for example) you Don't do anything stupid with HTTP header names, for example, emit them directly in your HTML (which may allow an attacker to inject an XSS attack into your HTML code).
So, as long as you process the HTTP headers as if they were as unreliable as any other data presented by the user in your application (e.g. query strings, POST data, etc.), then you should be in order, "insecure" headers in your application.
Justin grant
source share