作者: 云杉上的蝴蝶    来源: 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参数的作用相关推荐

  1. 终于搞清楚了ADO数据库连接中的Persist Security Info参数的作用

     终于搞清楚了ADO数据库连接中的Persist Security Info参数的作用 ADO用了这么久,每次用向导创建ADO的数据库连接字符串时总会有产生一个Persist Security Inf ...

  2. Persist Security Info 参数的作用

    Persist Security Info 参数的作用 Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码 ...

  3. ADO数据库连接中的Integrated Security和Persist Security Info参数的作用

    关于sql连接语句中的Integrated Security=SSPI 解决方法: 即:Security Support Provider Interface 设置Integrated Securit ...

  4. sql数据库连接字符串(Persist Security Info)

    用.udl连接数据库时,选择允许保存密码时Persist Security Info=True,否则为False Persist Security Info属性的意思是表示是否保存安全信息,其实可以简 ...

  5. Persist Security Info = true | false作用

    Persist Security Info ----是否保存安全信息 User ID-------------------用户名 PassWord------------------密码 Initia ...

  6. ADO.net 中数据库连接方式

    ADO.net 中数据库连接方式 在MSDN中,.net的数据库连接字符串都有详细的说明,我这里以代码范例的方式罗列一些,具体的每一项代表的意义可以参看MSDN. ADO.net 中数据库连接方式(微 ...

  7. 数据库连接的Persist Security Info参数说明

    Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息", True表示保存,False表示不保 ...

  8. ADO.NET中SQL Server数据库连接池

    实际上,大多数应用程序仅使用一个或几个不同的连接配置. 这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭. 为了使打开的连接成本最低,ADO.NET 使用称为连接池的优化方法. 连接池减少 ...

  9. 黑马程序员--ADO.Net中的知识点和难点

    ------- Windows Phone 7手机开发..Net培训.期待与您交流! ------- 1. ADO.Net基础 程序要和数据库交互要通过ADO.Net进行,通过ADO.Net就能在程序 ...

最新文章

  1. win7操作系统在哪显示隐藏文件夹
  2. 3Blue1Brown深度学习笔记 深度学习之神经网络的结构 Part 1 ver 2.0
  3. [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx
  4. 《信息安全系统设计基础》实验四 外设驱动程序设计
  5. 程序猿专属成语 get√
  6. node.js入门小案例
  7. POJ-2349-Arctic Network
  8. 苹果iPhone发布13周年:累计销量近20亿部
  9. 随笔记---python ctrl + 移动光标到所用库报错:无法找到要转到的声明
  10. 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
  11. 如何使用简单的接入点扩展您的Wi-Fi网络
  12. ClientToScreen 和ScreenToClient 用法
  13. postman环境设置
  14. 部分更新没有安装 KB4535102
  15. Less变量动态修改
  16. 怎样为自己计算机设置共享密码错误,如何忘记共享电脑的账号和密码怎么办
  17. Python之灵异事件
  18. CI 与 CD 有什么区别
  19. 写在2022的尾巴上
  20. PHP-中文转换成拼音

热门文章

  1. 生活-象棋-蹩马腿-1
  2. 【Python】Python 可变对象和不可变对象
  3. VSFTPD + NGINX
  4. ps – report process status
  5. Ebistrategy亦策软件提升仙婷贸易竞争实力
  6. 法国童话故事《小王子》读后感
  7. 网络编程:Reactor与Proactor的概念
  8. 【嵌入式开发教程9】手把手教你做平板电脑-WIFI 驱动实验教程
  9. 在ubuntu 18上进行NPB和mpiP的整合
  10. 「掘虫者说」The timestamp difference between admin and executor exceeds the limit