Whatever message this page gives is out now! Go check it out!
<cfgridupdate> — tablename, tableowner, tablequalifier<cfstoredproc> — the procedure name, and each <cfprocparam> bind-variable name (dbvarname)<cfinsert> and <cfupdate> already existed. This update extends the same protection to <cfgridupdate> and <cfstoredproc>.<!--- Fine — plain identifiers, works as before --->
<cfstoredproc procedure="get_customers" datasource="mydb">
<cfprocparam type="in" dbvarname="@region" value="#form.region#" cfsqltype="cf_sql_varchar">
</cfstoredproc>
<!--- Now rejected — the procedure name is not a plain identifier --->
<cfstoredproc procedure="get_customers; DROP TABLE audit--" datasource="mydb">
</cfstoredproc>value=/cfsqltype, which is already safe). If you have a genuine reason to allow non-standard identifiers, there are opt-out flags — secure by default; leave them off in production:| Flag | Turns off validation for |
|---|---|
-Dcoldfusion.sql.allowUnsafeTableIdentifiers=true | <cfinsert>, <cfupdate>, <cfgridupdate> |
-Dcoldfusion.sql.allowUnsafeStoredProcIdentifiers=true | <cfstoredproc> |
XmlTransform() when it runs an XSLT stylesheetdoc(), document(), unparsed-text(), result-document, and environment-variable(). This update adds two more to that list:collection()uri-collection()XmlTransform().<!--- Fine — a normal transform --->
<cfset result = XmlTransform(myXmlDoc, myStylesheet)>collection(), the transform now fails with a message stating that external collection resolution is disabled by security policy.collection(). If a trusted, internal deployment genuinely needs it, you can re-enable it (off by default):-Dcoldfusion.xml.saxon.allowCollection=truecollection() counterpart to the existing -Dcoldfusion.xml.saxon.allowDocFunction and -Dcoldfusion.xml.saxon.allowUnparsedText overrides. Only enable it if your stylesheets are fully trusted.Flag | Description | Default |
| -Dcoldfusion.xml.saxon.allowCollection | Re-enables the XSLT collection() and uri-collection() functions inside XmlTransform(). When left at default, calls to these functions fail with a security-policy error. Enable only for fully trusted stylesheets. | false (functions blocked) |
| -Dcoldfusion.xml.saxon.allowUnparsedText | Re-enables the XSLT unparsed-text() function inside XmlTransform(), which lets a stylesheet read arbitrary text files. When left at default, calls to this function fail with a security-policy error. Enable only for fully trusted stylesheets. | false (function blocked) |
Flag | Description | Default |
| -Dcoldfusion.xml.saxon.allowDocFunction | Re-enables the XSLT doc() / document() functions inside XmlTransform(). | false (functions blocked) |
| -Dcoldfusion.sql.allowUnsafeTableIdentifiers | Disables identifier validation for <cfinsert>, <cfupdate>, and <cfgridupdate> table name/owner/qualifier attributes. | false (validation active) |
| -Dcoldfusion.sql.allowUnsafeStoredProcIdentifiers | Disables identifier validation for <cfstoredproc> procedure name and dbvarname bind-variable names. | false (validation active) |
GetSafeHTML() before passing it to the tag or attribute. URL/navigation fields require separate URL-scheme validation rather than HTML sanitization.cfserialfilter.txt deserialization filter file. These settings allow administrators to control the maximum size and complexity of deserialized data while retaining the secure, fail-closed defaults.| Configuration key | Getter | Default | Purpose |
|---|---|---|---|
maxarray= | getMaxArrayLength() | 100,000 | Maximum length permitted for a single array or recordset |
maxdepth= | getMaxDepth() | 64 | Maximum element nesting depth |
maxelements= | getMaxTotalElements() | 200,000 | Maximum cumulative elements across the entire packet |
maxarray applies to a single <array length='N'> or <recordset rowCount='N'>, while maxelements limits the cumulative number of elements processed across the complete packet.| 2025 Update | Packages updated |
| Update 13 | Yes
|
| Update 12 | Yes
|
| Update 11 | Yes
|
| Update 10 | Yes
|
| Update 9 | Yes
|
| Update 8 | Yes
|
| Update 7 | Yes
|
| Update 6 | Yes
|
| Update 5 | Yes
|
| Update 4 | Yes
|
| Update 3 | The following packages are updated:
|
| Update 2 | The following packages are updated:
|
| Update 1 | The following packages are updated:
|