最近客户在安装某款国内著名ERP管理软件时,我在现场指导过程发现了一个有意思的问题,虽然该软件是由具有数十年经验,并占有财务软件绝对市场控制权的企业开发的,但是从其安装过程看,还是有很多漏洞的。
其系统安装时需要MS SQLSERVER的SA帐号进行配置,厂商的安装人员想都没想就配置了个空SA密码,经提醒后倒是设了个密码,不过设置完后发现已经在客户端安装的软件都没法用了,又无奈改回了空SA密码...
从其安装过程看,作为C/S架构的软件,其最起码有如下问题:
1. 这种现象说明其在安装过程中没有创建数据库专用管理账户,而是使用了数据库服务器的最高管理员账户。如果数据库服务器存在多个软件系统的数据库,只要破解了连接帐号,就可以通吃了。
2. 该软件客户端的数据库连接字符串应该时记录在客户端的,早期的版本据说配置文件连加密都没做,直接将sa密码敞开口供应。此种做法一方面不安全,另一方面一旦DB管理员修改了SA密码,所有客户机都将无法连接。
其实,改变这种问题的方法很简单,开发难度也不大,只要做好两件事即可:
1. 安装过程中的数据库配置处理
服务器端安装过程中,很容易做到仅使用一次数据库服务器管理员密码,创建号数据库后,自动为数据库设置专用的操作账户,并自动生成账户密码,记录在配置文件中,这样做就可以由软件系统负责数据库连接帐号的安全管理(为了提高安全性,所创建的帐号应禁用帐号的登录功能)。
2. 客户端的数据库连接字符串获取处理
C/S模式的SQL数据库连接必须配置数据库连接字符串,而该字符串包含了数据库名,帐号及密码,目前的做法主要有如下几种:
1)直接明码的方式写入客户端配置文件中,安全性就不说它了。
2)使用SSPI集成认证方式,但对于此方式,客户端自动就具有数据库的操作权,可以在不使用软件情况下直接对数据库操作。因此是不安全的。
3)使用加密的配置文件,虽然具有一定的安全性,但一旦数据库密码发生改变,所有客户端仍然不能登录。
由于以上三种做法都存在问题,因此我们的做法如下:
- 数据库连接字符串的配置文件只存在于服务器中,而不存在于客户端中。
- 服务器开辟专用的认证端口用于接收客户机的认证请求,端口通信可以配置诸多加密手段保护。
- 客户端通过认证后,服务器使用加密通道将数据库连接字符串发送给客户端
- 客户端的数据库连接字符串保存在内存中,而不是在配置文件中,可以保证一定程度的安全。
- 一旦发现密码泄露,只需要调整服务器端配置文件即可,不用改变客户机的配置。
可见,采用端口通信的方式设置客户端的数据库连接字符串更加安全,也更易于管理。
当然,要想进一步提高数据库的安全性,防止通过内存分析的方式获取连接字符串,还可以设置动态连接的方式处理,比如服务器控制每个连接使用不同的帐号,并根据需求动态的改变帐号密码。
分享到:
相关推荐
本篇文章将深入探讨“C#高效数据库连接池源码”相关的知识点。 1. **数据库连接池原理**: 数据库连接池是一种对象池设计模式的应用,它维护了一组已打开的数据库连接,而不是每次需要时都创建新的连接。应用程序...
Java JDBC 数据库连接池...Java JDBC 数据库连接池技术可以解决频繁的数据库连接操作对系统资源的占用,提高系统的性能和可靠性。同时,连接池技术也可以和其它技术结合使用,例如 EJB 技术,实现高效的数据库访问。
在实际应用中,还需要考虑事务管理、安全性、连接泄露检测等高级特性。例如,使用Spring框架可以方便地进行声明式事务管理,通过AOP(面向切面编程)自动处理事务的开始、提交、回滚等操作。 总之,数据库连接池是...
当然,实际应用中还需要注意错误处理和异常捕获,确保程序的稳定性和安全性。此外,如果需要对大量数据进行高效处理,考虑使用更专业的数据库系统,如MySQL或SQL Server,而不是直接操作Excel文件。
6. 安全性:在数据库连接中,还需要考虑安全性问题,如使用身份验证(Windows集成身份验证或SQL Server身份验证),以及是否启用加密连接。对于远程连接,可能需要设置防火墙规则和权限,确保只有授权的用户和应用...
5. **安全性考量**:虽然使用通用数据库连接文件简化了连接过程,但同时也需要注意安全性问题。例如,不应将包含敏感信息的连接文件放置在公共可访问的位置,以防止未授权访问。 #### 四、总结 通过使用通用数据库...
因此,这个数据库连接类特别考虑了线程安全,可能采用了以下策略之一: 1. **连接池**:使用连接池(如Apache的DBCP或C3P0)管理数据库连接,每个线程在需要时从池中获取连接,用完后归还,而不是直接创建新的连接...
4. **连接池的扩展性**:设计良好的连接池应具备良好的扩展性,能适应不同的数据库驱动(如MySQL、Oracle、PostgreSQL等),支持多种数据库连接配置。 5. **性能监控**:为了优化系统性能,连接池通常需要提供一些...
1. **安全性**:确保连接池的安全性,防止恶意攻击或误操作导致的数据泄露。 2. **扩展性**:考虑到未来业务的发展,连接池的设计应当易于扩展,能够方便地调整最大连接数等参数。 3. **兼容性**:不同的数据库...
1. 官方渠道:首选从数据库供应商的官方网站获取最新的驱动包,以确保安全性和稳定性。 2. 第三方资源:如题目所述,有时官方渠道可能无法满足需求,此时可以考虑从可信的第三方源获取。但需要注意验证文件的来源和...
2. **参数设置文件**:这可能是配置文件,用于设定数据库连接池的相关参数,如最大连接数、最小连接数、超时时间、数据源类型等。这些参数对连接池的性能有直接影响,需要根据应用的实际需求进行调整。 3. **连接池...
本实例将详细讲解如何在VB.NET中建立与数据库的连接,进行数据操作,并确保程序的稳定性和安全性。 首先,我们需要引入ADO.NET组件,这是.NET Framework提供的用于访问数据库的一组类库。在VB.NET项目中,我们可以...
通过以上步骤,我们可以增强Spring MVC应用程序的安全性,防止数据库连接信息泄露。这不仅提高了系统的安全性,也符合企业数据保护的最佳实践。在实际操作中,可能还需要考虑如何处理解密失败的情况,以及如何安全地...
本文将深入探讨MySQL数据库连接语句,并提供多种样例,帮助你理解和应用。 在编程中,连接字符串是一种包含所有必要参数的字符串,用于建立应用程序与数据库之间的连接。对于MySQL,这些参数可能包括服务器名称、...
在IT行业中,数据库连接管理是服务端开发中的关键环节,特别是在高并发环境下,高效、稳定的...通过理解和使用`UP_AdoDb.pas`这样的源代码,开发者可以定制适合自己项目的数据库连接管理方案,提升系统的性能和稳定性。
6. **安全性考虑**:在处理数据库连接串时,应特别注意保护敏感信息,如密码。在生产环境中,通常会使用加密技术或连接池来提高安全性。 通过学习和研究这个“易语言数据库连接串生成器”,开发者不仅可以掌握...
在IT行业中,数据库连接是至关重要的,它允许应用程序与存储数据的...在实际工作中,应根据系统架构、性能需求以及安全性考虑来选择合适的数据库连接方式,并确保正确配置连接字符串,以实现最佳的数据库访问性能。
7. **安全性**:确保所有连接信息的安全性,避免明文存储密码,并使用SSL/TLS等加密技术保障数据传输安全。 8. **监控与日志**:启用数据库服务器的日志功能,记录连接尝试,以便于分析和调试。 总的来说,测试...
总之,阿里数据库连接池Druid是Java开发中的重要工具,它提供的不仅仅是简单的数据库连接管理,还包括了丰富的监控、安全防护和性能优化功能。结合源码学习和配置文件的使用,开发者可以更好地掌握Druid的精髓,提升...
每种数据库都有自己的特点和用途,因此选择合适的连接工具需要考虑兼容性、易用性以及特定需求。 对于压缩包子文件“数据库连接工具”,这可能是包含某种数据库管理工具的下载包,可能包含安装程序、配置文件或者...