我正在编写一个小型系统,通过生成可以在我们的网站上兑换 MP3 的优惠券,我可以在演出中出售我乐队的音乐。
代金券需要用户输入的代码。代码需要具有以下特性:
- 在长度和内容方面具有一定程度的人类可读性,以防止用户感到沮丧和数据输入错误。
- 给定一个优惠券代码,猜测另一个优惠券代码并非易事。
如果我使用 GUID,我会担心第 1 点。如果我使用递增整数,我会担心第 2 点。两者之间必须有一些快乐的媒介,对吧?我想也许这项工作已经完成,并且有一个理想的解决方案在等着我。如果没有,我想我会使用随机的字母数字字符串,或者可能只有字母(为了清楚起见,不包括 I 和 O),并让应用程序阻止失败 X 次的 IP 地址,这表明可能的蛮力攻击。如果我这样做,字符串的长度和 X 的值会起作用,为什么?
谢谢你的帮助!
更新:我并没有完全明确该方法:我将生成用于打印的凭证代码列表,然后在演出后输入“已售”代码。因此,我认为校验和之类的元素不是必需的,就像它们在不使用验证服务器的软件密钥中一样。