Hash 像“#”#“this”#“#”一样,它仍然可以工作(即使人眼很难理解)。谢谢你的建议Brett,尝试了你的建议后仍然没有运气。(p.s.刚刚注意到问题中的语法着色问题可能触发了这一响应——为了澄清,这是so语法highligher中的一个缺陷,它不知道CF

Hash 像“#”#“this”#“#”一样,它仍然可以工作(即使人眼很难理解)。谢谢你的建议Brett,尝试了你的建议后仍然没有运气。(p.s.刚刚注意到问题中的语法着色问题可能触发了这一响应——为了澄清,这是so语法highligher中的一个缺陷,它不知道CF,hash,coldfusion,Hash,Coldfusion,像“#”#“this”#“#”一样,它仍然可以工作(即使人眼很难理解)。谢谢你的建议Brett,尝试了你的建议后仍然没有运气。(p.s.刚刚注意到问题中的语法着色问题可能触发了这一响应——为了澄清,这是so语法highligher中的一个缺陷,它不知道CFML,因此不知道它应该将散列的内容作为一个表达式来处理。)不,这是完全有效的“#do(“this”)#”-它工作正常,不会导致任何错误。如果你疯了,你甚至可以做像“#”#“#”这样的事情。,而且它仍然可以工作(即使人类的眼睛很难跟上)。谢谢你的


“#”#“this”#“#”
一样,它仍然可以工作(即使人眼很难理解)。谢谢你的建议Brett,尝试了你的建议后仍然没有运气。(p.s.刚刚注意到问题中的语法着色问题可能触发了这一响应——为了澄清,这是so语法highligher中的一个缺陷,它不知道CFML,因此不知道它应该将散列的内容作为一个表达式来处理。)不,这是完全有效的
“#do(“this”)#”
-它工作正常,不会导致任何错误。如果你疯了,你甚至可以做像
“#”#“#”这样的事情。
,而且它仍然可以工作(即使人类的眼睛很难跟上)。谢谢你的建议Brett,尝试你的建议后仍然没有运气。(p.s.刚刚注意到问题中的语法着色问题,这可能触发了这一响应-为了澄清,这是so语法highligher中的一个缺陷,它不知道CFML,因此不知道应该将哈希的内容作为表达式处理。)很抱歉进行了编辑。它一直在转义我的cfqueryparams,不允许我正确设置代码格式。:-SThank you Shawn,我已将此付诸实施。Shawn我已在答案中发布了解决方案。:-)很抱歉进行了编辑。它一直在转义我的cfqueryparams,不允许我正确格式化代码。:-SThank you Shawn,我已将此付诸实施。Shawn我已在答案中发布了解决方案。:-)我相信CF哈希函数中的编码参数有问题,并且不总是像广告中那样工作。我知道以前是这样。我不知道情况是否仍然如此。我相信CF散列函数中的编码参数有缺陷,并不总是像广告中所说的那样工作。我知道以前是这样。RE:结果还是一样的好。不过有一个修正,如果有一个额外的前导空格,那么值就不一样了。该在线工具默认情况下会忽略空白,因此除非您更改默认选项,否则您将看不到差异。我甚至无法计算有多少次我在数据库中意外的前导/尾随空格或更糟糕的从Word复制/粘贴过来的特殊字符上撞到墙上。Grrrr。。。。很高兴你把它修好了。卡罗迪亚:结果还是一样的好。不过有一个修正,如果有一个额外的前导空格,那么值就不一样了。该在线工具默认情况下会忽略空白,因此除非您更改默认选项,否则您将看不到差异。我甚至无法计算有多少次我在数据库中意外的前导/尾随空格或更糟糕的从Word复制/粘贴过来的特殊字符上撞到墙上。Grrrr。。。。很高兴你修好了Caludia。
<cfif IsDefined("FORM.email")>
  <cfset redirectLoginSuccess="admin.cfm">
  <cfset redirectLoginFailed="login.cfm">
  <cfquery  name="UserAuth" datasource="sql1007539">
  SELECT email,userPass FROM customers WHERE email=<cfqueryparam value="#FORM.email#" cfsqltype="cf_sql_clob" maxlength="255"> 
  AND userPass=<cfqueryparam value="#Hash(form.userPassword, "SHA-384")#" cfsqltype="cf_sql_clob" maxlength="255">
  </cfquery>
  <cfif UserAuth.RecordCount NEQ 0>
    <cftry>
      <cflock scope="Session" timeout="30" type="Exclusive">
        <cfset Session.Username=FORM.email>
        <cfset Session.UserAuth="">
      </cflock>
      <cfif IsDefined("URL.accessdenied") AND true>
        <cfset redirectLoginSuccess=URL.accessdenied>
      </cfif>
      <cflocation url="#redirectLoginSuccess#" addtoken="no">
      <cfcatch type="Lock">
      </cfcatch>
    </cftry>
  </cfif>
  <cflocation url="#redirectLoginFailed#" addtoken="no">
  <cfelse>
  <cfset LoginAction=CGI.SCRIPT_NAME>
  <cfif CGI.QUERY_STRING NEQ "">
    <cfset LoginAction=LoginAction & "?" & XMLFormat(CGI.QUERY_STRING)>
  </cfif>
</cfif>
<cfquery  name="UserAuth" datasource="sql1007539">
  SELECT email,userPass FROM customers WHERE email="#FORM.email#" 
  AND userPass="#hash(form.userPassword, "sha-384")#"
  </cfquery>
SELECT email,userPass FROM customers 
WHERE email = <cfqueryparam value="#FORM.email#" cfsqltype="cf_sql_varchar" maxlength="255"> 
AND userPass = <cfqueryparam value="#Hash(form.userPassword, "SHA-384")#" cfsqltype="cf_sql_varchar" maxlength="255">
<cfquery  name="UserAuth" datasource="sql1007539">
  SELECT email,userPass FROM customers WHERE email=<cfqueryparam value="#FORM.email#" cfsqltype="cf_sql_clob" maxlength="255"> 
  AND userPass=<cfqueryparam value="#Hash(form.userPassword, "SHA-384", "UTF-8")#" cfsqltype="cf_sql_clob" maxlength="255">
  </cfquery>
<cfset form.email = "some known email">
<cfset form.userPassword = "real password before hashing">

<!--- ONLY match on email ---->
<cfquery name="qGetData" ....>
     SELECT  * 
     FROM    yourTable
     WHERE   email =<cfqueryparam value='#FORM.email#' 
                            cfsqltype="cf_sql_varchar">
</cfquery>

<!--- Checking to see if the password is hashed or is in clear text --->
<cfdump var="#qGetData#">
<cfset newhash = hash(form.userPassword,'SHA-384')>
<cfif compare(newHash, qGetData.userPass) eq 0>
    SAME
<cfelse>
    DIFFERENT
</cfif>
<cfoutput>
   db |#qGetData.userPass#|<br>
   form |#hash(form.userPassword,'SHA-384')#|<br>
</cfoutput>