我的网站上有一个功能(ColdFusion),它在电子邮件中发送密码提醒。我想替换密码字符串中除第一个和最后一个之外的所有字符 - 因此提醒电子邮件不包含整个密码......
所以,而不是包含' Password123'它将包括' P * ... * 3'
正如您所猜测的那样,我不是开发人员。我可以在电子邮件模板中找到<cfoutput>#password#</cfoutput>
。我可以使用字符串处理功能吗?
不要求该函数替换原始字符的确切数量。它可以是第一个也是最后一个,其他所有内容都替换为&#39; ... &#39;。
答案 0 :(得分:1)
这是一种方法。只需使用函数left()
获取第一个字符,使用函数right()
获取最后一个字符。我不建议用.
或其他任何东西替换所有其他字符。您将在密码中披露实际的字符数。相反,我只会在第一个和最后一个字符之间放置三个.
或*
。
以下是一些可以帮助您的代码。请注意,我还提供了一个如何替换其中每个其他字符的示例,但我不建议这样做。
<cfscript>
password = 'Password123';
password_firstchar = left(password,1);
password_lastchar = right(password,1);
writeOutput(password_firstchar & '***' & password_lastchar);
writeOutput('<p> </p>');
writeOutput(password_firstchar);
writeOutput(repeatString('.',len(password)-2));
writeOutput(password_lastchar);
</cfscript>
运行该代码的输出是:
P***3
P.........3
以下是该代码的要点,以便您可以运行它并使用它 - TryCF gist example
注意:您指示ColdFusion 9作为您的平台。该版本的语法支持有限cfscript
。我认为我给你的东西仍然适用于那个版本,但如果没有让我知道。您可以使用标记语法。
答案 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