Writing
+Injection Warning
+When opening a CSV in an external program, a formula in a field could be ran that contains a vulnerability.
+Read more here: CSV Injection.
+Due to this issue, there is a setting InjectionOptions
that can be configured.
The list of injection characters to detect are configurable in CsvConfiguration.InjectionCharacters
+and default to =
, @
, +
, -
, \t
, \r
. An injection character can be the first character of a field
+or quoted field. i.e. =foo
or "=foo"
The InjectionOptions
values are None
(default), Escape
, Strip
, and Exception
.
None
+No injection protection is taken.
+Exception
+If an injection character is detected, a CsvWriterException
is thrown.
Strip
+All injection characters at the start of a field will be removed. ===foo
will be stripped to foo
.
Escape
+If an injection character is detected, the field will be prepended with the InjectionEscapeCharacter
+that defaults to '
. The field will be quoted if it is not already.
=one
-> "'=one"
"=one"
-> "'=one"
=one"two
-> "'=one""two"
This option is disabled by default because the primary goal if this library is to read and write CSV
+files. If you are storing user entered data that you haven't sanitized yourself and you're letting
+it be accessed by people that may open in Excel/Sheets/etc, you might consider enabling this feature.
+The InjectionEscapeCharacter
is not removed when reading.
When writing, you can throw an enumerable of class objects, dynamic objects, anonymous type objects, or pretty much +anything else, and it will get written.
+Topics | ++ |
---|---|
Write Class Objects | ++ |
Write Dynamic Objects | ++ |
Write Anonymous Type Objects | ++ |
Appending to an Existing File | ++ |