我对我的项目进行了安全扫描,并收到以下问题-
包含敏感数据的可序列化类
解决方法是
在Java中,显式定义最终的writeObject()以防止序列化。这是推荐的解决方案。定义writeObject()函数以引发显式拒绝序列化的异常。
扫描中指出的问题之一:
Map<String, String> creditCardDetails;
我怀疑我们是否可以这样做?实际上,我们可能要求对象进行序列化并通过网络传递。我无法进行加密。就时间而言,这可能也很昂贵。
我们可以为此讨论吗?
如何执行?
在什么情况下我们可以这样做?
还有其他解决方法吗?
我怀疑我们是否可以这样做?实际上,我们可能要求对象进行序列化并通过网络传递。我无法进行加密。就时间而言,这可能也很昂贵。
如果您通过不安全的渠道传递客户的信用卡详细信息,则会使客户面临财务风险。这是严重违反信任,在许多法律辖区中可能更糟。
如果随后发现您的系统泄漏了信用卡信息,则您的客户可能会起诉您。如果提起诉讼,但由于故意的设计决定而发现您的信用卡信息泄露,则可望对您/您的公司判给惩罚性损害赔偿,远远超出对客户的实际损害。
只有两个安全的解决方案:
使用strong加密。性能下降是经商的成本。如果成本太高,那就别忙了!
不发送信用卡信息。
请注意,存储信用卡详细信息也有潜在的风险。如果您弄错了并且存在泄漏,那也是诉讼领域。
这可能不是您/您的老板想听的,但是您/他们需要听的。