c# - 使用 C# 安全地连接到 AWS MySQL 数据库

标签 c# mysql security encryption amazon-web-services

我已经构建了一个利用 Amazon 托管的数据库的应用程序。我正在尝试找到一种安全且全面地连接到此的方法,我确信我不知道自己在做什么。

我的初衷是通过加密将数据库凭据存储在我的应用程序中,但我相信使用 Web 服务将是更好的选择,因为本地存储的任何内容都无法真正得到保护。但是,我不知道如何使用网络服务来实现此目的,也不知道为什么它会产生影响。

在使用 Web 服务时,我是否会构建 Windows Server 并将此“Web 服务”部署到它以进行连接,然后它会连接到我的数据库?尽管我仍然认为自己是一个业余爱好者,但这似乎是多余的。即使如此,我如何安全地对其进行身份验证?

对我来说,最终目标是能够将数据库(和 PayPal 卖家凭证)存储在用户在任何情况下都无法访问的地方,但我的程序可以。它看起来比这里和其他地方的人们看起来要简单得多,但我还是个新手。

任何方向将不胜感激!我想很快将其部署到我们组织之外进行测试等。

谢谢大家!

最佳答案

对我来说,让你的“应用程序”——我认为它是指部署在人们设备上的“应用程序”或者某种桌面应用程序——直接连接到你的数据库是不可想象的,除非考虑将将汽车 key 装在纸质信封中并将其贴在 window 上似乎很安全。

应用程序应该对数据库执行极少数非常具体的操作,并且应该准确地记录它所做的事情、来自何处以及代表谁。该应用程序可以向服务发出请求,例如 REST API ,通过 https 在您的应用程序服务器(“Web 服务”)上运行,然后您的应用程序服务器将根据需要调解请求并从数据库获取值或向数据库发送更新...仅在应用程序完成之后让应用程序服务器相信它确实代表了它声称代表的特定用户。

这是一个基本原则,任何你无法控制的东西,你都无法信任。

“为什么它会产生影响”是“哈!我破解了一个用户的密码”和“哈!我偷了你的数据库”之间的区别。应用程序服务器可以将任何请求验证为对于所提供的特定最终用户凭证来说是合法的……而数据库在很大程度上没有准备好执行此类操作。

最终用户(不是应用程序)将向应用程序服务器进行身份验证,应用程序服务器将根据数据库验证这些凭据,不提供任何关于身份验证失败原因的提示...用户不发现,密码不正确,我们不知道,我们不在乎——抱歉,登录失败。向我们提供您的电子邮件地址,我们将向您发送一封支持电子邮件,或者如果这不是我们存档的电子邮件,我们将假装已存档。提示可以帮助黑客。

store ... PayPal seller credentials

好吧,您需要确保这不属于 section 10.1.2 of the Paypal Developer Agreement 中禁止“收集、捕获、使用或存储”的事物之列。 .

那么,你如何做到这一点呢?这部分答案让我们有点超出了范围,因为有很多选择,情况也发生了变化,而且这在很大程度上是关于“最佳”方法的意见问题,但我认为 ASP 或 PHP 是最好的简单明了。

将其视为构建一个支持数据库的网站,而无需费力使其美观,因为除了应用程序的后端之外,没有人会看到它......并且有您的“网络服务”。

I've been assured that I have no idea what I'm doing

这让你远远领先于那些没有意识到自己不知道自己在做什么的人。

关于c# - 使用 C# 安全地连接到 AWS MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20445120/

相关文章:

c# - 源生成器 : Attribute ConstructorArguments is empty

c# - Linq 表达式 : Perform Distinct on a list dynamic property

mysql - MariaDB 使用 utf8mb4 时出现错误

mysql 使用 case 语句查询提取计数

linux - 保持 OE/Yocto 图像更新的过程

c# - 调试不起作用

c# - 使用选择和参数插入

mysql - 使用 iBatis 调用存储过程

javascript - 在 Rails 中清理 CSS

javascript - npm 漏洞对前端重要吗?