这个问题的答案很大程度上取决于您将提供什么样的促销活动。
如果促销的价值相当低,Get 1 dollar discount on you next purchase of 5 dollars or more
那么我认为保护数据库中的促销代码没有多大意义。在这种情况下,将促销代码丢失给黑客不会是最严重的灾难。相反,黑客获得对数据库的访问权这一事实将比一些被盗的促销代码更令人担忧。
另一方面,如果促销价值很高,Be one of the three out of 2 million users that wins a new car
那么保护促销代码就很有意义。在这种情况下,您必须确保:
- 促销代码本身足够长且随机(使其足够随机可能非常棘手),因此几乎不可能猜到它。
- 促销代码的存储方式可以在有人访问其存储位置时对其进行保护。以某种散列或加密的形式存储它(但使用加密你有一个新问题,保持加密密钥的安全)可能是最好的选择。您甚至可以以某种方式将其分解,并将其中的一部分存储在几个不同的地方。
请记住,在这种情况下,您的同事(和您)是主要的黑客候选人。即使他们没有资格申请,他们也可以窃取代码并将其交给他们母亲身边的第二个堂兄(或类似的人)。
此外,您站点主机的管理员需要避免从他们的存储表单中找出代码是什么。
此外,请确保用户输入促销代码的页面使用 SSL,以防止有人在传输过程中拦截它。
更一般地说,您需要确定促销代码是一次性使用还是多个人可以使用相同的代码。
有类似的促销活动并不少见Visit us on [popular social network] to get a free baseball cap with your next purchase
。在这种情况下,允许每个用户使用相同的促销代码是有意义的,即使存在有人可能会在没有实际访问的情况下获得代码的风险。
您当然可以同时支持这两种类型(单次/多次使用)。
您还需要弄清楚促销代码是如何生成和分发的。您是否在电子邮件活动中发送它们?你会在当地报纸上打印它们吗?您是要打印纸质优惠券并将其分发出去还是邮寄给人们?用户必须破解 20 个验证码才能获得代码吗?
您需要决定谁有资格使用促销代码。它必须是注册用户还是任何人都可以使用它?未注册用户如何使用它?
从技术上讲,选择很多。这取决于我们谈论的是哪种网络应用程序。我会首先尝试弄清楚要支持哪种不同的促销活动。候选人:
- 购买额外折扣
- 免费附加促销产品
- 下一个订单免运费
- 2 个月访问网站其他无法访问的部分
- (ETC)
然后我会围绕我想要支持的促销类型构建框架(数据库表、业务逻辑等)。就我个人而言,我不会为每个促销活动单独制作页面。我会尝试尽可能地将促销整合到网站的现有流程中。