【发布时间】:2010-12-27 22:14:18
【问题描述】:
我正在编写一个小系统,通过生成可在我们的网站上兑换 MP3 的优惠券,我可以在演出中出售我乐队的音乐。
代金券需要用户输入的代码。代码需要具有以下品质:
- 在长度和内容方面具有一定程度的人类可读性,以防止用户感到沮丧和数据输入错误。
- 给定一个优惠券代码,猜测另一个优惠券代码并非易事。
如果我使用 GUID,我会担心第 1 点。如果我使用递增整数,我会担心第 2 点。两者之间必须有一些快乐的媒介,对吧?我想也许这项工作已经完成,并且有一个理想的解决方案在等着我。如果没有,我想我会使用随机的字母数字字符串,或者可能只有字母(为了清楚起见,不包括 I 和 O),并让应用程序阻止失败 X 次的 IP 地址,这表明可能的蛮力攻击。如果我这样做,字符串的长度和 X 的值会起作用,为什么?
感谢您的帮助!
更新:我并没有完全明确该方法:我将生成用于打印的优惠券代码列表,然后在演出后输入“已售”代码。因此,我认为校验和之类的元素没有必要,就像它们在不使用验证服务器的软件密钥中一样。
【问题讨论】:
-
关于阻止蛮力攻击,我不会费心开始。关于你和你的乐队,这并不是说你在保护一些非常重要的东西。这对我来说似乎有点不成比例。
-
你说得对,我在设计系统时玩得太开心了。但是你去吧,我本质上是一个程序员。另外,如果一切顺利,我可能会主持其他乐队的专辑。
-
他们正在保护他们的工作。请注意问题中的“出售”一词。
标签: language-agnostic uuid password-generator