【发布时间】:2012-04-08 22:44:37
【问题描述】:
我现在正在运行一个 Coldfusion 应用程序,其登录名向数据库发送查询,以查找与表单中输入的用户名和密码相同的行。
目前,它完全不区分大小写。但是,我想在密码字段中添加区分大小写的功能,以便用户必须拥有准确的密码。有没有办法在coldfusion中做一个区分大小写的IF语句?
【问题讨论】:
我现在正在运行一个 Coldfusion 应用程序,其登录名向数据库发送查询,以查找与表单中输入的用户名和密码相同的行。
目前,它完全不区分大小写。但是,我想在密码字段中添加区分大小写的功能,以便用户必须拥有准确的密码。有没有办法在coldfusion中做一个区分大小写的IF语句?
【问题讨论】:
您可以 hash() 两个值并比较哈希值。
<cfif Hash( DBPassword ) EQ Hash( SubmittedPassword )>
<!--- Login Code --->
</cfif>
此外,您不应将密码按原样以纯文本形式存储在数据库中。
【讨论】:
compare 可能是您正在寻找的功能,但以纯文本形式存储密码是不明智的。最好将散列版本存储在您的数据库表中并使用类似WHERE Password = <cfqueryparam value="#Hash(form.password)#" ..>
正如这里提到的: http://www.irt.org/script/3018.htm
看来你可以使用:
<cfif Compare(string1,string2) eq "0">...</cfif>
【讨论】:
另一种选择:
如果您的数据库支持区分大小写,请将您的表设置为使用区分大小写的排序规则 - 然后您的用户查找查询将对存储的和提供的用户名/密码进行区分大小写的比较。然后,您不必使用 CF 进行任何查询后字符串比较(运行少 1 个进程 = 好 :)
+1 对 Leigh 关于以纯文本形式存储密码的警告。
【讨论】: