2009-07-30 4 views
5

Mit ColdFusion MX7 senden wir beim Auftreten einer Ausnahme eine E-Mail an das Entwicklungsteam, die Dumps der verschiedenen Datenbereiche einschließlich der Formularstruktur enthält.Ist das CFDUMP-Tag änderbar?

Dies funktioniert gut für das Debuggen, außer im Falle eines Fehlers, wenn sich der Benutzer anmeldet. Wir druckten das Passwort heraus am Ende immer.

Also, die Frage ist, gibt es eine Möglichkeit, die CFDUMP-Datei zu ändern, so dass sie den Wert Passwort filtert Objekt aus der Form?

Natürlich könnten wir es in den gleichen Code schreiben, der die E-Mail sendet, aber es wäre ideal, es in die CFDUMP-Datei zu legen, so dass wir uns keine Sorgen machen müssen, dass es an anderen Stellen erscheint.

Ich habe die CFDUMP Datei befindet und es scheint, binär zu sein, so vermute ich, wir es nicht tun können.

+0

Würde Ihr Problem nicht wirklich ansprechen, selbst wenn Sie auf CF8 waren, aber erwähnenswert: : –

Antwort

6

Sie können die dump.cfm Datei kopieren, dumporiginal.cfm und dann eine neue dump.cfm machen, die dumporiginal.cfm nennt.

<!--- 
    So that it won't execute twice if you 
    have a closing slash (<cfdump ... />) 
---> 
<cfif thisTag.executionMode neq "start"> 
    <cfexit method="exitTag" /> 
</cfif> 


<!--- 
    defaults for optional attributes, taken from the docs 
    http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_d-e_08.html 
---> 
<cfparam name="attributes.expand" default="yes" /> 
<cfparam name="attributes.format" default="html" />  
<cfparam name="attributes.hide" default="all" />  
<cfparam name="attributes.keys" default="9999" />  
<cfparam name="attributes.label" default="" />  
<cfparam name="attributes.metainfo" default="yes" />  
<cfparam name="attributes.output" default="browser" />  
<cfparam name="attributes.show" default="all" />  
<cfparam name="attributes.showUDFs" default="yes" />  
<cfparam name="attributes.top" default="9999" />  

<!--- Hide the password, but store its value to put it back at the end ---> 
<cfif isStruct(attributes.var) and structKeyExists(attributes.var, 'password')> 
    <cfset originalPassword = attributes.var.password /> 
    <cfset attributes.var.password = "{hidden by customized cfdump}"/> 
</cfif> 

<!--- 
    Call the original cfdump. 
    Which attributes you pass depends on CF version. 
--->    
<cfswitch expression="#listFirst(server.coldfusion.productVersion)#"> 
<cfcase value="6"> 
    <cfdumporiginal 
     var = "#attributes.var#" 
     expand = "#attributes.expand#" 
     hide = "#attributes.hide#" 
     label = "#attributes.label#" 
     > 
</cfcase> 
<cfcase value="7"> 
    <cfdumporiginal 
     var = "#attributes.var#" 
     expand = "#attributes.expand#" 
     hide = "#attributes.hide#" 
     label = "#attributes.label#" 
     top = "#attributes.top#" 
     > 
</cfcase> 
<cfdefaultcase>  
    <cfdumporiginal 
     var = "#attributes.var#" 
     expand = "#attributes.expand#" 
     format = "#attributes.format#" 
     hide = "#attributes.hide#" 
     keys = "#attributes.keys#" 
     label = "#attributes.label#" 
     metainfo = "#attributes.metainfo#" 
     output = "#attributes.output#" 
     show = "#attributes.show#" 
     showUDFs = "#attributes.showUDFs#" 
     top = "#attributes.top#" 
     > 
</cfdefaultcase> 
</cfswitch> 

<!--- Restore the password, in case it's read after cfdump call ---> 
<cfif isDefined("originalPassword")> 
    <cfset attributes.var.password = originalPassword /> 
</cfif> 
+0

Ich habe nur in CF8 getestet, aber in der Theorie sollte es in CF6/7/8 + funktionieren. –

+0

BTW, auf meinem Rechner (CF8 Developer Edition unter OS X) habe ich dump.cfm unter/Applications/ColdFusion8/wwwroot/WEB-INF/cftags gefunden –

3

Nein, ich glaube nicht, dass es einen Weg gibt, <cfdump> ‚s Verhalten zu ändern. Ich kann mir nicht sicher sein. Es ist Denkbare, dass ein solcher Hack vorhanden ist, obwohl es nicht unbedingt empfehlenswert ist.

Warum nicht mit einem einfachen:

<cftry> 
    <cfset DoSomethingThatFails()> 

    <cfcatch> 
    <cfif StructKeyExists(FORM, "Password")> 
     <cfset FORM.Password = "***"> 
    </cfif> 
    <cfdump var="#FORM#"> 
    </cfcatch> 
</cftry> 
+0

Das ist meine Vermutung. Der Grund ist im Grunde, dass es in Fällen ersetzt wird, die nicht erwartet werden. Wenn jemand einfach einen Dump für einen Test oder etwas einklebt. –

+0

Oh, und Ihr Beispiel ändert tatsächlich den Wert des Passworts, was wahrscheinlich kein Problem ist, weil es in einer Fehlersituation ist. Es ist wahrscheinlich besser, die Struktur zuerst zu duplizieren. –

+0

Ja, es war hauptsächlich um meinen Standpunkt klar zu machen. Wenn Sie den Leuten, die das System pflegen, nicht trauen können, sind Sie sowieso vermasselt, IMHO. – Tomalak

1

CFDUMP begann als benutzerdefiniertes Tag (CF_DUMP) in CF5 Tagen zurück. Sie können immer den Code für dieses benutzerdefinierte Tag abrufen und es an Ihre Bedürfnisse anpassen und dieses anstelle des integrierten Tags verwenden.

Verwandte Themen