gsr
09/13/2024, 10:16 AM<cffunction name="onRequestEnd" returntype="void">
<cfargument name="targetPage" type="string" required="true">
<cfset var response = getPageContext().getResponse()>
<cfset var out = response.getWriter()>
<cfset var content = out.toString()>
<cfif not isJSON(content)>
<cfcontent reset="true">
<cfoutput>#injectCsrfToken(content)#</cfoutput>
</cfif>
</cffunction>
i cehcked my logs file but nothing is appearing on it, is there another wy of doing the same thing or at least some error i should getgsr
09/13/2024, 10:58 AMtext/html;charset=UTF-8
my code for csrfprotection in the function is not appearingbrettpr
09/13/2024, 11:03 AMbrettpr
09/13/2024, 11:07 AMgsr
09/13/2024, 12:10 PMquetwo
09/13/2024, 12:10 PM<cfcontent reset="true"> wipes out the existing buffer, so you will always have a blank page. Not sure why you think you need that there.gsr
09/13/2024, 12:10 PMgsr
09/13/2024, 12:11 PM<cffunction name="onRequestEnd" returntype="void">
<cfargument name="targetPage" type="string" required="true">
<cfset var response = getPageContext().getResponse()>
<cfset var contentType = response.getContentType()>
<cfdump var="#contentType#">
<<cfif isNull(contentType) or contentType contains "text/html">
<cfoutput>#injectCsrfToken(contentType)#</cfoutput>
</cfif>
</cffunction>
<cffunction name="injectCsrfToken" access="private" returntype="string">
<cfargument name="content" type="string" required="true">
<cfset var csrfToken = session.csrfToken>
<cfset var csrfScript = '
<script nonce="#generateScriptNonce()#">
document.addEventListener("DOMContentLoaded", function() {
var forms = document.getElementsByTagName("form");
for (var i = 0; i < forms.length; i++) {
var input = document.createElement("input");
input.type = "hidden";
input.name = "csrfToken";
input.value = "#csrfToken#";
forms[i].appendChild(input);
}
(function(open) {
XMLHttpRequest.prototype.open = function() {
open.apply(this, arguments);
this.setRequestHeader("X-CSRF-Token", "#csrfToken#");
};
})(XMLHttpRequest.prototype.open);
});
</script>
'>
<cfdump var="#csrfScript#">
<cfreturn replace(arguments.content, "</body>", "#csrfScript#</body>")>
</cffunction>quetwo
09/13/2024, 12:13 PM</body> tag? Might want to replace it with a regex or at least a ReplaceNoCase()gsr
09/13/2024, 12:14 PMquetwo
09/13/2024, 12:19 PMgsr
09/13/2024, 12:19 PMquetwo
09/13/2024, 12:21 PM<<cfif isNull(contentType) or contentType contains "text/html">gsr
09/13/2024, 12:21 PMgsr
09/13/2024, 12:21 PMquetwo
09/13/2024, 12:23 PMgsr
09/13/2024, 12:33 PMgsr
09/13/2024, 12:33 PM