替换ColdFusion字符串中的字符

时间:2017-10-27 09:49:28

标签: coldfusion passwords coldfusion-9

我的网站上有一个功能(ColdFusion),它在电子邮件中发送密码提醒。我想替换密码字符串中除第一个和最后一个之外的所有字符 - 因此提醒电子邮件不包含整个密码......

所以,而不是包含' Password123'它将包括' P * ... * 3'

正如您所猜测的那样,我不是开发人员。我可以在电子邮件模板中找到<cfoutput>#password#</cfoutput>。我可以使用字符串处理功能吗?

不要求该函数替换原始字符的确切数量。它可以是第一个也是最后一个,其他所有内容都替换为&#39; ... &#39;。

2 个答案:

答案 0 :(得分:1)

这是一种方法。只需使用函数left()获取第一个字符,使用函数right()获取最后一个字符。我不建议用.或其他任何东西替换所有其他字符。您将在密码中披露实际的字符数。相反,我只会在第一个和最后一个字符之间放置三个.*

以下是一些可以帮助您的代码。请注意,我还提供了一个如何替换其中每个其他字符的示例,但我不建议这样做。

<cfscript>
password = 'Password123';
password_firstchar = left(password,1);
password_lastchar = right(password,1);

writeOutput(password_firstchar & '***' & password_lastchar);

writeOutput('<p>&nbsp;</p>');

writeOutput(password_firstchar);
writeOutput(repeatString('.',len(password)-2));
writeOutput(password_lastchar);
</cfscript>

运行该代码的输出是:

P***3

P.........3

以下是该代码的要点,以便您可以运行它并使用它 - TryCF gist example

注意:您指示ColdFusion 9作为您的平台。该版本的语法支持有限cfscript。我认为我给你的东西仍然适用于那个版本,但如果没有让我知道。您可以使用标记语法。

Here is an example that includes the tag syntax as well

答案 1 :(得分:0)

老实说,我甚至不推荐这里的解决方案。不要没有帮助,但因为这个问题的前提应该强烈劝阻。 Miguel-F的回答将按照要求进行原始请求,但它没有解决这里的真正问题,即密码的纯文本存储。

您现在可能对密码的处理方式有限,但我认真考虑回过头来修复您使用密码的方式,而不是试图掩盖电子邮件通知中的内容。现在这将是一个更大的问题,但它将在一次破坏中为您节省大量的麻烦。密码永远不可恢复。

查看https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet

注意:要替换字符串中除了第一个和最后一个字符之外的所有字符,您可以直接进入CF的Java实现并使用Java Regex(这比CF&#39;更好)。我认为这在CF9中有效,replaceAll()应该在CF9 JDK中。你必须尝试一下。

'minutes'

https://trycf.com/gist/c33d8a9b8e7edfedb935fc7ce6654cd7/acf?theme=monokai https://www.regular-expressions.info/lookaround.html