2011-02-17 54 views
4

我想在我正在开发的Web应用程序中使用base36 ...但由于id对用户可见,因此我想过滤掉亵渎。有没有人解决这个问题或者这是一个真正的问题?如何过滤base36 ID中的亵渎语言?

仅仅跳过我的数据库序列中的数字是否有意义?

+4

强制TDWTF参考:[The Automated Curs e Generator](http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx)。 – 2011-02-17 17:26:36

+4

YOu偶然意味着base36 ID可能会出现为`page.php?id = screwyou3234`? – 2011-02-17 17:26:52

+0

如果我跟着你在URL中传递你的id在base36,对吧?那么,如果你不想亵渎你的id,为什么不把它作为base10传递并在必要时进行转换?除此之外,你是否有理由在base36工作?大多数系统(即数据库,中间层等)预计基数为10(无论如何,基数为10的符号,内部全为0和1)。 – 2011-02-17 17:29:28

回答

7

好吧,不要试图收集所有可能的发誓词,只要过滤出元音。这会让你在空间中有很多排列组合。无可否认,你刚刚从基数36减少到基数31,但基数31的数字是有效的基数为36的数字,假设有相同的符号集(a-z0-9)。如果你困扰你,用一些其他非魔术7位ascii替换这些元音,例如!,@,$,%和(。

当然,最终可能会出现sh1t和fck,但亵渎语言是读者的心灵。

-Oisin

2

为什么不直接以十六进制使用的是全随机生成的GUID?无论什么编程语言,你的工作中,这应该是很容易产生,而且是以十六进制表示,我会想象产生一些可能会导致易受攻击的方法为零的可能性