Действительно ли тег CFDUMP является модифицируемым?

От этой статьи: Закрытые методы Тестирования с JUnit и (Bill Venners) SuiteRunner , у Вас в основном есть 4 опции:

  • не тестируют закрытые методы.
  • Предоставляют доступ пакета методов.
  • Использование вложенный тестовый класс.
  • отражение Использования.

5
задан Tom Hubbard 30 July 2009 в 11:34
поделиться

4 ответа

Вы можете скопировать файл dump.cfm в dumporiginal.cfm, а затем создать новый dump.cfm, который вызывает 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>
6
ответ дан 13 December 2019 в 22:13
поделиться

Нет, я не думаю, что есть способ изменить поведение. Очевидно, я не могу быть уверенным. Возможно , что такой хакер существует, хотя это не обязательно рекомендуемый .

Почему бы не пойти с простым:

<cftry>
  <cfset DoSomethingThatFails()>

  <cfcatch>
    <cfif StructKeyExists(FORM, "Password")>
      <cfset FORM.Password = "***">
    </cfif>
    <cfdump var="#FORM#">
  </cfcatch>
</cftry>
3
ответ дан 13 December 2019 в 22:13
поделиться

CFDUMP начал свою жизнь как настраиваемый тег (CF_DUMP) еще во времена CF5. Вы всегда можете получить код для этого настраиваемого тега, изменить его по своему усмотрению и использовать вместо встроенного тега.

1
ответ дан 13 December 2019 в 22:13
поделиться

Проблема с отображением только пароля? Если да, то, возможно, решение состоит в том, чтобы солить / хешировать пароль? В любом случае, я считаю это хорошей практикой.

http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html

0
ответ дан 13 December 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: