在最近的一次漏洞披露中,spotify 谈到了用户如何使用用户名规范化代码中的故障来访问他们不拥有的帐户。问题是他们正在对用户名应用非幂等操作以检查它们是否被使用,因此 ᴮᴵᴳᴮᴵᴿᴰ 和 BIGBIRD 是不同的用户名,而不应该是。
我想允许我的网站使用 Unicode 用户名,但我不想容易受到此类攻击。我不使用 Python,所以我不能使用他们在他们的网站上提出的解决方案。是否有任何一种幂等公式,可以在支持 Unicode 操作的任何平台(即 python、ruby、lua、javascript、.NET 等)上使用,它将处理两个仅具有“视觉”差异的 Unicode 字符串相同的字符串? 它像NKFD +小写字符串一样简单吗?