屏蔽日志文件中的信用卡号

我们使用log4net库在文件中写入日志 . 实际上我们有一个付款表格,我们接受三个字段

  • 持卡人姓名(最长50)

  • 卡号(有效的信用卡号码,即主/签证等)和

  • 参考(这只是一个文本文件,最大长度用户可以输入任何字符串或整数值) .

当用户提交这些值时,我们将这些输入(除了卡号,因为我们在存储到日志文件之前将其屏蔽)记录在文件中 . 但是因为用户可以在参考字段中输入任何字符串或整数,所以用户可以在此字段中输入卡号,然后将其写入日志文件 . 那么我们如何保护这个领域,以便用户无法在此字段中添加卡号?
enter image description here

回答(3)

2 years ago

当用户提交表单时,您可以验证输入 . 要检查信用卡信息的参考字段,您可以使用线程Regex credit card number tests中描述的正则表达式 .

如果它与输入匹配,您可以拒绝提交并向用户发出警告(“参考可能不包含信用卡号”等),或者只是跳过此字段的记录 . 或者您可以以匿名方式记录它,例如用星号(*)替换与正则表达式匹配的输入部分,并在日志消息中添加简短描述以替换信用卡号 .

2 years ago

我这里没有看到实际问题 . 卡号仅在上下文中有用 . "Reference"可能看起来像卡号,但实际上不是信用卡 . 你're only obligated to protect credit card numbers stored as credit card numbers, or stored in such a way that it can be surmised they are credit card numbers. The relative rarity that a user might put a card number into the 1306210 field would not allow anyone viewing the logs to surmise that it'肯定是一个卡号 .

尽管如此,我还是说如果你想 grab 这些,最好的选择是Luhn检查领域 . 如果你实际上在一个不是信用卡的字段中获得Luhn检查的通行证,那么你可以删除它或对其进行模糊处理 .

2 years ago

如果在参考中输入了卡号,那么它将是一个复制粘贴错误(最终用户可以这样做) . 您可以简单地检查如果引用包含cardnumber字符串然后抛出异常 .

如果参考号和卡号都有不同的有效卡号 . 然后它必须是您的QA人员输入的数据 . 哈哈哈