名字会破坏网站

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费积分!

我从 Reply All 的 Alex Goldman 那里得知(一个超级棒的播客,故事大多起源于互联网)

我们正在做一个关于那些名字会导致网站和电脑无法正常运行的人的故事——例如,我们采访了一个名叫 William Test 的男人和一个名叫 Katie Test 的女人,他们似乎都无法预订酒店或飞机,因为名字中的“test”被内部系统标记了。

我们还采访了一个名叫 Christopher Null 的男人,他遇到了同样的问题,以及一个名叫 Joan Fread 的女人,她无法使用 PayPal,因为她的姓与一个 PHP 命令相同。

我很好奇,开发社区是否有任何人正在思考这个问题,以及如何处理它。 这个问题甚至算得上是一个问题吗? 受到影响的人口数量是否如此之小,以至于人们甚至不会考虑它呢?

我回复了,但那是几个月前的事了,我还没有收到任何回复。 我认为我应该把我的回复发布在这里,因为它确实是一个很有趣的话题,也许通过这里的评论,我们可以激发一些他可以使用的有趣内容。

这是我的回复


归根结底,这是糟糕的编程。 任何软件都不应该接受一个名字输入并在任何时候将其视为代码。 如果你的姓氏像 著名的 XKCD 漫画 一样,在一个设计良好的系统中,这应该没问题。

有一些正当的理由可以“标记”名字。 在我的公司 (CodePen),我们对包含不良语言的名字进行标记。 你不能以 “Sh*tf*cker Dirtyballs” 的名字注册。 我们是故意这么做的,目的是为了营造一个更健康的社区。

名字用户名 是不同的。 对用户名设置更严格的规则要合乎情理一些。 在我们的代码库中,我们有一个名为 “username_blacklist.rb” 的文件,它可以阻止使用很多词语。 这样做不是因为我们担心会覆盖 Ruby 函数或其他什么,而是因为 1) 我们在 URL 中使用用户名,这意味着我们需要保留一些用户名供我们自己使用,2) 再一次,不良语言过滤器。 3) 垃圾邮件。 如果一个用户名包含 “watchsocceronline” (例如),我们会将其标记为垃圾邮件审查。

编程的 “现实世界” 很复杂。 公司编写快速修复问题的 “创可贴代码” 而不是完善代码,这并不奇怪。 编写代码来阻止/标记姓氏为 “delete” 比审核整个代码库以查找该字符串导致问题的场景更容易。


你们对这个问题有什么经验吗?