ADO数据库连接中的Persist Security Info参数的作用
作者: 云杉上的蝴蝶 来源: IXPUB技术博客
可能许多人不知道数据库连接参数(Connection String) 中的Persist Security Info 参数是做什么用的,且用到的机会也很少,但我们这几天就遇到了一个跟Persist Security Info 参数有关的错误,特别分享一下处理的经验。
先从 Visual Studio 的Server Explorer 讲起,请先参考下图。
当你在新增连接时,可以选择[Save my password] 选项,如果你有勾选,可以点选[Advanced...] 按钮查询通过工具帮你产生的连接符串。
image2.axd.png
image3.axd.png
实际存储在 web.config的连接参数大概将会长这样:
Data Source=.;Initial Catalog=master;Persist Security Info=True;User ID=sa;Password=xxxx光通过 Visual Studio工具上的说明就可大略得知Persist Security Info 的用途。在缺省不加上Persist Security Info 的情况下,缺省为False,当程序需要进行数据库连接时,此时会将「敏感信息」例如:口令(Password)等信息暂存在连接对象中(内存里),当连接创建成功之后,就会立即将「敏感信息」清除,这能确保内存中的「敏感信息」会立即清除,降低信息揭露(Information Leakage)的风险,因为这样的风险也是出现在OWASPTop 10 (2007) 的第六位 (A6)。
精确的来说,连接信息是在SqlConnection类型的 ConnectionString属性或DbConnection类型的 ConnectionString属性中。
当你将 Persist SecurityInfo 宣告为 True时,即便连接已经创建,也会将口令存储在内存中,供后续程序引用,而我们就刚好有一支程序需要在程序执行的过程中取得新的连接,需要用到原本的连接参数,所以需要将 Persist Security Info 宣告为True 才能正常运作。
其实也不一定要将PersistSecurity Info 宣告为True,因为只要将该程序修改成直接从web.config 中重新读入Connection String 即可。
除此之外,我同事也遇到一个奇怪的事件,就是同一段代码在执行时明明有些页面不会挂掉,有些页面就会挂掉,不同人看同一页时,也会有时成功、有时失败的情况。那是因为 ADO.NET 有Connection Pool 的概念,在连接数足够的情况下是不需要重新创建连接的,所以才会有这种类似灵异事件的情况。
ADO数据库连接中的Persist Security Info参数的作用相关推荐
- 终于搞清楚了ADO数据库连接中的Persist Security Info参数的作用
终于搞清楚了ADO数据库连接中的Persist Security Info参数的作用 ADO用了这么久,每次用向导创建ADO的数据库连接字符串时总会有产生一个Persist Security Inf ...
- Persist Security Info 参数的作用
Persist Security Info 参数的作用 Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码 ...
- ADO数据库连接中的Integrated Security和Persist Security Info参数的作用
关于sql连接语句中的Integrated Security=SSPI 解决方法: 即:Security Support Provider Interface 设置Integrated Securit ...
- sql数据库连接字符串(Persist Security Info)
用.udl连接数据库时,选择允许保存密码时Persist Security Info=True,否则为False Persist Security Info属性的意思是表示是否保存安全信息,其实可以简 ...
- Persist Security Info = true | false作用
Persist Security Info ----是否保存安全信息 User ID-------------------用户名 PassWord------------------密码 Initia ...
- ADO.net 中数据库连接方式
ADO.net 中数据库连接方式 在MSDN中,.net的数据库连接字符串都有详细的说明,我这里以代码范例的方式罗列一些,具体的每一项代表的意义可以参看MSDN. ADO.net 中数据库连接方式(微 ...
- 数据库连接的Persist Security Info参数说明
Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息", True表示保存,False表示不保 ...
- ADO.NET中SQL Server数据库连接池
实际上,大多数应用程序仅使用一个或几个不同的连接配置. 这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭. 为了使打开的连接成本最低,ADO.NET 使用称为连接池的优化方法. 连接池减少 ...
- 黑马程序员--ADO.Net中的知识点和难点
------- Windows Phone 7手机开发..Net培训.期待与您交流! ------- 1. ADO.Net基础 程序要和数据库交互要通过ADO.Net进行,通过ADO.Net就能在程序 ...
最新文章
- win7操作系统在哪显示隐藏文件夹
- 3Blue1Brown深度学习笔记 深度学习之神经网络的结构 Part 1 ver 2.0
- [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx
- 《信息安全系统设计基础》实验四 外设驱动程序设计
- 程序猿专属成语 get√
- node.js入门小案例
- POJ-2349-Arctic Network
- 苹果iPhone发布13周年:累计销量近20亿部
- 随笔记---python ctrl + 移动光标到所用库报错:无法找到要转到的声明
- 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
- 如何使用简单的接入点扩展您的Wi-Fi网络
- ClientToScreen 和ScreenToClient 用法
- postman环境设置
- 部分更新没有安装 KB4535102
- Less变量动态修改
- 怎样为自己计算机设置共享密码错误,如何忘记共享电脑的账号和密码怎么办
- Python之灵异事件
- CI 与 CD 有什么区别
- 写在2022的尾巴上
- PHP-中文转换成拼音