我怎样才能在这台机器上提供良好的安全性以防止有人窃取数据库(通过本地访问 - 这台机器没有连接互联网)?
您可以做很多事情,但其中大部分不是直接的数据库编程。因为其中大部分都不是编程,所以它可能超出了您的范围。我不知道你被雇来做什么或你的背景是什么。如果这超出了范围,或者您对实施它感到不舒服,请让您的客户知道您的安全问题并建议他们聘请专家。
这取决于存储的信用卡号的用途。如果该号码仅用于唯一识别客户或购买,那么您实际上并不需要信用卡号码,只需一个与信用卡号码不匹配的值即可。如果是这种情况,则将信用卡号替换为信用卡号的哈希值。一些哈希算法:SHA1、MD5、RIPEMD-128/256。
如果在某个时候不再需要信用卡号,但行中的其余数据是,请清除信用卡字段。如果您需要保留卡的某些指示,但不用于充电,则保留最后四位数字。
如果您不需要同时访问整个事物,请将数据库分成您需要同时访问的部分。如果条目是独立的,则将其分成大小相等的部分。如果一件物品丢失或被盗,这将限制损坏。尝试一次加载尽可能少的部分。如果您的应用程序一次只能访问几个部分,这将减慢未经授权的用户的速度。
有几种方法可以做到这一点。一种方法是使用加密令牌。有 USB 设备、智能卡设备和软件令牌。软件令牌可以存储在任何可移动媒体(CD-ROM、DVD、USB 闪存驱动器等)上。如果您确实将数据库分解为多个部分,您可能会考虑为某些部分使用不同的键,特别是如果某些部分的使用频率低于其他部分。
salt是一个随机数,通常与散列密码条目一起使用,使访问密码数据库的攻击者难以快速找到数据库中的所有密码。PBKDF2 是一种使用盐和密码生成密钥的加密算法。为每一行生成一个盐(随机数)并将盐以明文形式存储在该行中。使用 PBKDF2 或其他合适的密钥生成算法为然后行生成密钥,并使用生成的密钥加密信用卡数据。目的是让攻击者读取数据库并生成一个新的密钥来解密每个信用卡号。
你说这台机器没有连接互联网,但我怀疑它仍然在内部网络上。使用系统上的防火墙来限制对两个或三个其他系统的网络访问。如果系统需要连接到两个或三个以上的其他系统,那么您可能需要考虑将数据库移动到不同的系统或为数据库创建一个专用系统。
配置安全策略,只允许少数关键用户登录机器。如果超过 8 人需要访问机器,这又应该是一个信号,表明数据库应该转移到另一个系统或它自己的专用系统。我对八个用户的快速了解:系统管理员、系统管理员候补、安全管理员、安全管理员候补、数据库管理员、数据库管理员候补、应用程序开发人员、应用程序开发人员候补。
这只是老式的上锁门。如果它需要在与其他系统共享的区域中,请尝试使其系统允许访问相同的用户。如果所有可用的只是壁橱或橱柜,请确保它具有唯一的钥匙。许多办公室锁和家具共享共同的钥匙。
仅仅因为他们需要访问机器并不意味着他们需要物理访问系统。选择您将钥匙交给谁,并指示他们不要复制或将其借给其他任何人。