11

不接受带有空格的信用卡号码是否有技术/法律/财务/合同/设计原因?

如此多的网站不允许您在信用卡号中添加空格或破折号。我一直把它归结为草率的编程,但我以前使用过商家 API。如果你能弄清楚如何处理信用卡,你就能弄清楚如何从字符串中去除字符。设计师知道他们正在让用户感到沮丧,因为他们在网站上直接发出警告。他们就在卡片上!甚至为此感到羞耻。

虚假的懒惰、糟糕的编程、冷酷无情、虐待狂……所有这些都假定编写代码的人是最糟糕的。我能想到的最慷慨的是他们对任何涉及金钱的事情都非常保守。我一直想知道是否有一些深刻且非常重要的原因为什么您不应该接受带有空格的信用卡号码?为什么你绝对不应该尝试应用任何启发式方法。也许可以追溯到电报时代的一些奇怪的金融法?也许他们是无名英雄,保护我们免受一些未知的邪恶,以免我们输入哈斯塔的信用卡号码三遍。

4

6 回答 6

8

除了懒惰或时间限制之外,真的没有什么好的理由。

好的 UI 应该适应用户以及用户思考数据的多种方式。

UI 很容易适应用户在信用卡中输入破折号或空格。

于 2009-12-13T20:24:20.877 回答
1

我的第一个答案是“将复杂性降至最低”,但我想您也可以争辩说,如果某处存在攻击面,它会混淆数据 - 一个狡猾的路由器/嗅探器/中间人 - “xxxx xxxx xxxx xxxx”几乎可以肯定是一个信用卡号码,但“xxxxxxxxxxxxxxxx”可能是很多东西。当然,这不会阻止很多坚定的黑客攻击,并且希望SSL 等在很大程度上减轻了攻击。

我强调,我不认为这是一个很好的理由,但这可能是一个理由......

于 2009-12-13T20:26:12.790 回答
0

并非所有事情都有正当理由。我只是认为第一个这样做的人不允许空格,因为它更容易;然后大家都跟了上去,没有质疑。

于 2009-12-13T20:23:57.190 回答
0

我不记得我的商家协议中有任何内容规定用户必须在表单字段中输入什么内容来询问信用卡号码。我没有竭尽全力对其进行规范化,但我确实删除了空格和连字符。虽然有关于您可以重新显示的内容的规则,但这只是内容的数量而不是精确的形式。

不过,您会看到电话号码和社会安全号码的类似内容,所以我认为这不是信用卡号码问题。

我主要认为这主要是一个中间件问题。你有一个团队开发的前端,另一个团队开发的后端,中间有一个没有人喜欢并且每个人都必须针对的现成的中间件组件。中间件的编写尽可能严格,认为规范化所有数据是任何一方的责任。然后开始互相指责,每个人都哭着回家,你不能在信用卡号码中使用空格。

于 2009-12-13T20:24:08.007 回答
-1

我认为这只是懒惰和减少编程的问题,因为人们可以让它接受 AND 而没有破折号。甚至为每个部分制作不同的文本框(使用 4 或 5 个小文本框而不是使用巨大的文本框。或者可能只是因为人们可能会感到困惑

于 2009-12-13T20:46:46.883 回答
-1

我一直觉得这很奇怪,因为从字符串中删除非数字很简单。

这更加令人困惑,因为每种卡类型(Visa/MC/Amex/Discover)都有一个使用校验位的唯一编码。因此,当我输入信用卡号码并选择 VISA 作为卡类型时,智能验证器将验证该号码是否为 Visa 号码。因此,如果您要正确验证 CC 号码,您将不得不从任何用户提供的字符串中删除非数字。

我可以想到为什么卡验证实施不佳的三个主要原因:

  • 检查不预期非数字的数字验证。
  • 一个懒惰/苦恼的程序员将所有参数传递给支付网关,并让网关验证信用卡信息。支付网关的参数/数据验证比用户界面更严格。
  • 对修改用户提供的抄送数据的想象法律后果的误解。
于 2009-12-13T21:13:43.387 回答