我希望获得一些关于我为我的应用程序提出的安全模型的最佳实践反馈。我首先尝试使用 Amazon 的 RDS 将 Microsoft Access 前端/后端升级到 .NET WinForms/SQL Server。应用程序将是多用户、多站点(不同域)并包含敏感的健康信息。
这是2周研究的总结:
使用混合身份验证和 SSL 存储在应用程序中的加密连接字符串。不理想,但我想我已经找到了一种方法,如果连接字符串被盗,它就可以了(见下面的#5)。
SQL Server 只接受来自选定 IP 地址的连接(全部都是静态的)。
分配给一个具有仅执行权限的 SQL Server 用户的应用程序连接字符串。所有数据库交互都将使用过程完成。架构权限用于将应用程序用户限制在某些过程中。
具有 SHA 256 加盐和散列密码的用户表。这提供了第一层应用程序安全性。
这是我不确定的部分:只有在查找作为 exec 变量之一发送的用户名和密码的 IF 语句 = True 时,每个过程才会完全执行。UN/PW 将为应用程序的每个会话临时存储。我的理由是,这可以防止使用连接字符串以某种方式从允许的 IP 地址登录的用户在没有有效密码的情况下获取/更改任何数据。
使用 AES_256 对称密钥加密的敏感列,由使用数据库主密钥的证书加密。应用程序用户有权使用对称密钥和证书。
用户密码必须遵循规则(长度、大小写混合、特殊字符)。
任何人都可以看到其中的任何漏洞或有好的选择吗?#5 是否解决了 Windows 应用程序无法使用 Windows 身份验证的固有连接字符串安全漏洞?