关于在 Web 应用程序中处理连接字符串的建议、最佳实践和必须做的事情是什么?什么事情是一个人永远不应该做的?
从安全的角度来看,存储数据库连接字符串的正确方法是什么?
信息安全
应用安全
Web应用程序
数据库
2021-08-29 12:49:42
4个回答
最佳选择:不要为数据库使用密码,而是尽可能使用(Windows)集成身份验证,当然还要隔离为数据库授权的应用程序身份。这样,您就可以让 OS/Webserver/SCM 以非常安全的方式管理您的身份。
如果无法采用集成 Windows 身份验证 (IWA) 的方式,则需要安全地加密connstring ,最好使用DPAPI之类的东西(这样您就不必管理加密密钥),并存储加密的具有强 ACL 的受保护注册表项中的值。
如果您使用的是 ASP.NET(来自您的评论,但不是 OP),则有内置工具可以自动执行此操作(aspnet_setreg、aspnet_regiis 等,具体取决于版本...)
作为一个选项,尝试使用应用程序角色访问 sql server
好处:
- 普通网络管理员无需咨询数据库管理员 (DBA) 即可管理数据访问,只需控制谁有权访问应用程序即可。
- 您无需担心使用 SQL Server 本身跟踪不断变化的用户。设置应用程序角色,您可以将其委托回网络级别。
- 您可以将数据可用性限制为单个应用程序。例如,用户可能只能在使用总帐应用程序时修改会计信息,而不能在他直接连接到 SQL Server 时修改。
你不应该做的事情
- 将连接字符串放在文本文件中。
- 在公共可访问文件夹/目录中有配置文件。
你应该做的事情。
- 创建即时生成数据库密码的辅助函数。
- 经常更改数据库密码和用户名。
- 检查您的服务器是否配置正确,您没有将可执行文件作为纯文本提供。
我建议将您的连接字符串存储在网站根目录之外。
如果您使用的是 ASP.NET,那么您的 web.config 文件将位于网站根目录中,但您可以使用数据保护 API加密 web.config 文件的一部分,该 API 会安全地存储解密密钥。
您的 Web 应用程序使用哪个框架?
其它你可能感兴趣的问题