An exception's message, stack trace, or string representation reaches web output.
By default, this rule analyzes the entire codebase, but this is configurable.
Rule description
Disclosing exception information gives attackers insight into the internals of your application, which can help attackers find other vulnerabilities to exploit.
This rule attempts to find an exception message, stack trace, or string representation being output to an HTTP response.
Note
This rule can't track data across assemblies. For example, if one assembly catches an exception and then passes it to another assembly that outputs the exception, this rule won't produce a warning.
Note
There is a configurable limit to how deep this rule will analyze data flow across method calls. For information about how to configure the limit in an EditorConfig file, see Analyzer Configuration.
How to fix violations
Don't output exception information to HTTP responses. Instead, provide a generic error message. For more information, see OWASP's Improper Error Handling page.
When to suppress warnings
If you know your web output is within your application's trust boundary and never exposed outside, it's okay to suppress this warning. This is rare. Take into consideration that your application's trust boundary and data flows may change over time.
Suppress a warning
If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.
C#
#pragmawarning disable CA3004// The code that's violating the rule is on this line.#pragmawarning restore CA3004
To disable the rule for a file, folder, or project, set its severity to none in the configuration file.
You can configure these options for just this rule, for all rules they apply to, or for all rules in this category (Security) that they apply to. For more information, see Code quality rule configuration options.
Exclude specific symbols
You can exclude specific symbols, such as types and methods, from analysis by setting the excluded_symbol_names option. For example, to specify that the rule should not run on any code within types named MyType, add the following key-value pair to an .editorconfig file in your project:
Replace the XXXX part of CAXXXX with the ID of the applicable rule.
Allowed symbol name formats in the option value (separated by |):
Symbol name only (includes all symbols with the name, regardless of the containing type or namespace).
Fully qualified names in the symbol's documentation ID format. Each symbol name requires a symbol-kind prefix, such as M: for methods, T: for types, and N: for namespaces.
.ctor for constructors and .cctor for static constructors.
Matches specific methods MyMethod1 and MyMethod2 with the respective fully qualified signatures.
Exclude specific types and their derived types
You can exclude specific types and their derived types from analysis by setting the excluded_type_names_with_derived_types option. For example, to specify that the rule should not run on any methods within types named MyType and their derived types, add the following key-value pair to an .editorconfig file in your project:
Imports System
Partial Public Class WebForm
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, eventArgs As EventArgs)
Try
Dim o As Object = Nothing
o.ToString()
Catch e As Exception
Me.Response.Write(e.ToString())
End Try
End Sub
End Class
Imports System
Partial Public Class WebForm
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, eventArgs As EventArgs)
Try
Dim o As Object = Nothing
o.ToString()
Catch e As Exception
Me.Response.Write("An error occurred. Please try again later.")
End Try
End Sub
End Class
ითანამშრომლეთ ჩვენთან GitHub-ზე
ამ შიგთავსის წყაროს მოძიება GitHub-ზე არის შესაძლებელი, სადაც თქვენ ასევე შეგიძლიათ პრობლემების შექმნა და განხილვა და მოთხოვნების გადმოტანა. დამატებითი ინფორმაციისთვის იხილეთ ჩვენი დამხმარე სახელმძღვანელო.
.NET-(ი)ს უკუკავშირი
.NET არის ღია წყაროს პროექტი. აირჩიეთ ბმული უკუკავშირის გასაგზავნად:
შემოუერთდით Meetup სერიას, რათა შექმნათ მასშტაბური AI გადაწყვეტილებები რეალურ სამყაროში გამოყენების შემთხვევებზე დაყრდნობით თანამემამულე დეველოპერებთან და ექსპერტებთან.