2009-07-30 24 views
5

Với ColdFusion MX7 nếu chúng tôi gặp phải một ngoại lệ, chúng tôi sẽ gửi email đến nhóm phát triển chứa các bãi của các phạm vi dữ liệu khác nhau bao gồm cấu trúc biểu mẫu.Thẻ CFDUMP có thể sửa đổi được không?

Tính năng này rất hữu ích để gỡ lỗi ngoại trừ trường hợp xảy ra lỗi khi người dùng đăng nhập. Chúng tôi sẽ nhận được mật khẩu được in ra.

Vì vậy, câu hỏi đặt ra là, có cách nào để sửa đổi tệp CFDUMP sao cho nó lọc giá trị mật khẩu ra khỏi đối tượng biểu mẫu không?

Đương nhiên, chúng tôi có thể đặt mã này vào cùng một mã gửi email, tuy nhiên sẽ rất lý tưởng khi đặt nó trong tệp CFDUMP để chúng tôi không phải lo lắng về nó hiển thị ở các vị trí khác.

Tôi đã định vị tệp CFDUMP và tệp này có vẻ là nhị phân, vì vậy tôi đoán chúng tôi không thể thực hiện.

+0

Sẽ không thực sự giải quyết vấn đề của bạn, ngay cả khi bạn đang ở trên CF8, nhưng đáng chú ý: :-) –

Trả lời

6

Bạn có thể sao chép các tập tin dump.cfm để dumporiginal.cfm, và sau đó tạo ra một dump.cfm mới mà các cuộc gọi dumporiginal.cfm.

<!--- 
    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

Tôi chỉ được thử nghiệm trong CF8, nhưng về lý thuyết nó sẽ hoạt động trong CF6/7/8 +. –

+0

BTW, trên máy tính của tôi (phiên bản nhà phát triển CF8 trên OS X) Tôi đã tìm thấy dump.cfm tại/Applications/ColdFusion8/wwwroot/WEB-INF/cftags –

3

Không, tôi không nghĩ có cách sửa đổi hành vi của <cfdump>. Tôi không thể chắc chắn, rõ ràng. Đó là có thể nghĩ là rằng một bản hack như vậy tồn tại, mặc dù nó không nhất thiết phải được đề xuất.

Tại sao không đi với một đơn giản:

<cftry> 
    <cfset DoSomethingThatFails()> 

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

Đó là dự đoán của tôi. Lý do là cơ bản để nó được thay thế trong trường hợp không được mong đợi. Nếu ai đó chỉ dính một bãi chứa trong một thử nghiệm hoặc một cái gì đó. –

+0

Ồ, và ví dụ của bạn thực sự thay đổi giá trị của mật khẩu, điều này có thể không phải là vấn đề vì nó ở trong tình huống lỗi. Nó có lẽ tốt hơn để nhân đôi cấu trúc đầu tiên mặc dù. –

+0

Vâng, đó là chủ yếu để làm cho quan điểm của tôi rõ ràng. Nếu bạn không thể tin tưởng những người duy trì hệ thống bạn đang bị vặn, IMHO. – Tomalak

1

CFDUMP bắt đầu cuộc sống dưới dạng thẻ tùy chỉnh (CF_DUMP) trở lại trong CF5 ngày. Bạn luôn có thể lấy mã cho thẻ tùy chỉnh đó và sửa đổi nó theo nhu cầu của bạn và sử dụng nó thay vì thẻ được tích hợp sẵn.

Các vấn đề liên quan