在程序文件中包含 SQL 用户(权限有限)的安全隐患
Security Implications of Including SQL User (with limited permissions) Within the Program File
所以我的 C# Windows 表单应用程序有两个部分。 Database Records Manager (DRM)
和 Public Access Client (PAC)
.
我使用两个客户端访问 Microsoft Azure SQL 数据库,使用提供的连接字符串。
Server=tcp:{thedatabasename}.database.windows.net,{theport};Initial Catalog={adatabase};Persist Security Info={bool};User ID={username};Password={password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate={bool};Connection Timeout={int};
在程序代码中使用此连接字符串有哪些安全隐患? (在 formname.cs
内)
用于访问帐户的 user/login 具有 db_datareader
和 db_datawriter
角色。
程序连接到的数据库不包含敏感数据,可能除了 master 中的用户详细信息 table。
如果我没理解错的话,您的 Public Access Client (PAC)
是一个 C# Windows Forms 应用程序,用户可以在自己的机器上使用它。在这种情况下,您的数据库绝对不安全,因为连接字符串只是一个配置选项,它不提供任何安全性。攻击者可以反编译您的应用程序,获取连接字符串,然后使用它访问 Microsoft Azure SQL 数据库,这样他就可以提取或破坏您的所有数据。
您的数据库内容对所有人开放。用户名和密码很容易发现,然后就会广为人知。不仅是您的应用程序用户,实际上 任何人 都可以并且将会访问您的数据。脚本小子将删除每个 table 中的所有行(您已授予权限)只是因为他们可以。黑客会读取每个 table,包括您的用户名和电子邮件地址、您的财务交易,实际上,数据库中可用的任何内容。
此外,您会发现自己无法更改此泄露的用户凭据,因为它已硬编码在应用程序中,如果您想更改它,您必须说服用户安装新版本。
所以我的 C# Windows 表单应用程序有两个部分。 Database Records Manager (DRM)
和 Public Access Client (PAC)
.
我使用两个客户端访问 Microsoft Azure SQL 数据库,使用提供的连接字符串。
Server=tcp:{thedatabasename}.database.windows.net,{theport};Initial Catalog={adatabase};Persist Security Info={bool};User ID={username};Password={password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate={bool};Connection Timeout={int};
在程序代码中使用此连接字符串有哪些安全隐患? (在 formname.cs
内)
用于访问帐户的 user/login 具有 db_datareader
和 db_datawriter
角色。
程序连接到的数据库不包含敏感数据,可能除了 master 中的用户详细信息 table。
如果我没理解错的话,您的 Public Access Client (PAC)
是一个 C# Windows Forms 应用程序,用户可以在自己的机器上使用它。在这种情况下,您的数据库绝对不安全,因为连接字符串只是一个配置选项,它不提供任何安全性。攻击者可以反编译您的应用程序,获取连接字符串,然后使用它访问 Microsoft Azure SQL 数据库,这样他就可以提取或破坏您的所有数据。
您的数据库内容对所有人开放。用户名和密码很容易发现,然后就会广为人知。不仅是您的应用程序用户,实际上 任何人 都可以并且将会访问您的数据。脚本小子将删除每个 table 中的所有行(您已授予权限)只是因为他们可以。黑客会读取每个 table,包括您的用户名和电子邮件地址、您的财务交易,实际上,数据库中可用的任何内容。
此外,您会发现自己无法更改此泄露的用户凭据,因为它已硬编码在应用程序中,如果您想更改它,您必须说服用户安装新版本。