否认在注册表格上发誓的话

问题描述:

我有一个主要使用PHP的注册表单,但也有一些jquery/ajax。否认在注册表格上发誓的话

我目前已经设置为检查mySQL中的用户表以及deniedusers表,以便让人们知道名称是被采用还是被拒绝。我还添加了一些preg_match以避免使用不需要的字符。它还要求名称至少包含4个字符。

虽然我遇到了一些问题。

  1. 如果我允许使用撇号(O'Malley),用户可以注册''''。这是不可取的。

  2. 发誓的话。在我的deniedusers表中,我发表了许多发誓的话,但它并不全面。因此,我们以“butt”为例。我可以在我的deniedusers表中阻止“butt”作为用户名,但“Imabutt”或“mybutthole”怎么样?我知道过滤可能会变得棘手,一些脏话可以很容易地融入正常的单词中。我不需要这样做所有的工作,但过滤出一些简单的东西会很好。

我正在寻找是否在PHP端或jQuery端执行此操作的建议,以及一些代码示例或指向良好资源的指针。谢谢!

更新: 我对点2发誓得到了一些很好的反馈。非常感谢。

任何关于点1的帮助,关于奇怪的使用字符将不胜感激。

+8

http://thedailywtf.com/Articles/The-Clbuttic-Mistake-.aspx – dkackman 2011-04-17 03:23:48

+0

1.撇号如何使一个简单的strlen失败? 2.使用'badWord LIKE%butt%',假设badWord是你的列名。 – Khez 2011-04-17 03:25:24

+3

只是不。让管理员通过并删除带有粗鲁名称的帐户。 – 2011-04-17 03:26:07

这是一个不可能完成的任务。就像一个评论者说

人的创造力是无穷的

你将永远无法建立一个足够强大的解决方案。)捕获一切进攻和b)不损害合法用户。请参阅http://www.codinghorror.com/blog/2008/10/obscenity-filters-bad-idea-or-incredibly-intercoursing-bad-idea.html

唯一的工作策略是让某人(或几个人)查看新的用户注册并查找令人反感的事情。即使是流量相当高的网站(例如每天新增100个用户注册),这也是完全可以管理的。