2011-03-01 53 views
1

我正在研究一个Web应用程序(使用Ruby),我最终希望能够被世界上任何地方的人使用。考虑到这一点,支持非ASCII字符至关重要。但是,我不希望数据库在字段中填充“噪音”字符,例如用户名等。清理Unicode输入的最佳做法

在这些情况下是否有任何公认的处理Unicode输入的最佳做法而不疏远用户?处理用户名中的同形异义词以使模拟更难的任何想法?

我的一些想法至今 - 存储或查询

  • 使用它过滤非打印字符
  • 限制允许输入的顺序组合变音符号的号码前

    • 文本规范化

    有任何进一步的想法,还是我为自己做了不必要的工作?

    谢谢。

  • +1

    老实说,我认为你不仅为自己做更多的工作,而且破坏了你陈述的目的。如果你想让你的应用程序支持国际使用,它应该接受国际用户名,密码,你有什么。数据库发生了比在一个字段中包含阿拉伯字符更糟糕的事情。 – kojiro 2011-03-01 01:55:38

    +0

    目标是让人们能够注册阿拉伯语/日语/韩语/梵文/克林贡/ whathaveyou用户名,但尽可能降低来自诸如同形同情假冒等事情的风险。 – Leynos 2011-03-01 08:30:03

    回答

    3

    http://www.ietf.org/rfc/rfc3454.txt会告诉你你应该做什么,也就是说担心正常化和安全问题。

    +0

    谢谢。我是否理解LibIDN提供了RFC 3454的实现,这是我应该使用的吗? – Leynos 2011-03-01 08:39:34

    +0

    我相信是的。我从来没有自己做过。 – bmargulies 2011-03-01 15:02:56