以编程方式登录 mysql
Posted
技术标签:
【中文标题】以编程方式登录 mysql【英文标题】:Login to mysql programmatically 【发布时间】:2018-03-16 20:33:29 【问题描述】:我正在编写一个 c 程序,需要登录一个 mysql 数据库。我正在尝试找到一种简单而安全的方式在程序中存储用户名和密码。该程序将对 mysql 服务器进行 https 调用。我只需要能够包含用户/密码数据,我不想将它作为字符串存储在程序中。
有人知道一种简单而安全的方法吗?
这是在 linux 系统上。树莓派 debian (jessie)。
【问题讨论】:
所以你没有使用 MySQL C API,而是向数据库所在的一些网络服务器发出网络请求? 如果登录名和密码作为程序的参数提供(在argv[]
中)怎么办?
问题标题与实际问题不符,你应该找一个更好的。这是关于安全地存储凭据。典型的方法是将它们放在一个具有受限访问权限的配置文件中。
我更喜欢使用配置文件而不是将它们添加为程序参数。他们将载入史册。
【参考方案1】:
您不应该将用户名/密码硬编码到您的二进制文件中,因为它非常不灵活,并且如果您每次都必须重新编译二进制文件,您将倾向于不定期更改此密码。此外,二进制文件通常没有特别的读保护,因此其他用户可能会得到您的密码。
将凭据作为程序参数传递也是一个坏主意,因为它可能会出现在进程列表中,可能会保存在命令行历史记录中,可能会被审计工具等记录,因此您的密码可能会结束在几个你不希望它出现的地方。
您最好的选择是使用带有凭据的配置文件并为其提供所需的最低权限,因此您的凭据是安全的。一个简单的 linux 库例如 libini,它允许您分段存储键/值对,但还有许多其他选项。
另一个相当安全的选项,例如被 apache 用于私钥密码和类似的,是指定一个程序(通常是一个 shell 脚本),该程序被执行并在标准输出上输出凭据,然后由你的程序。同样,您必须在此处确保只有授权用户/进程才能读取或执行该脚本。
【讨论】:
非常感谢。是的,同意了。我决定使用配置文件并加密文件中的凭据。我希望在标准 c 中有一些标准的、简单的、易于使用的技术来处理这类事情。真的没有。但是我找到了一些基于 openssl 的相当简单的加密工具来帮助我。以上是关于以编程方式登录 mysql的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式登录到 ASP.NET Identity 2?