【问题标题】:Mock IP Address for Remote Mysql Connection .NET C Sharp远程 Mysql 连接的模拟 IP 地址 .NET C Sharp
【发布时间】:2013-08-22 20:39:23
【问题描述】:

你好,堆栈溢出的精彩社区,

我最近是一名 .net 开发人员,在 c sharp 工作。现在,我正在尝试编写一组单元测试来测试 mysql 数据库的安全性。测试套件的一部分是确保 mysql 数据库不能接受来自某些 IP 地址的连接。我一直在努力寻找一种方法来测试这一点。到目前为止的想法是:

  1. 模拟我当前拥有的 IP 地址,以便我正在建立的连接认为它来自另一个 IP 地址
  2. 通过 SSH 连接到具有不可接受 IP 地址之一的远程服务器并执行 shell 命令以连接到 mysql 服务器

我还没有找到手动更改发送到 mysql 服务器的 ip 地址的方法。我正在使用 MySql.Data.MySqlClient 程序集中的 MySqlConnection 类。据我的研究表明,这是不可能的。 (这可能是件好事)

我通过研究了解到 .Net 没有本地 SSH 库,并且该项目不可能引入一个,这阻碍了我执行 #2 的能力。

由此,我不知道如何继续。有没有人有模拟数据库连接和控制源 IP 的经验? (或与此相关的任何其他信息)?

非常感谢任何帮助或资源。

谢谢

【问题讨论】:

    标签: c# mysql .net unit-testing mocking


    【解决方案1】:

    对于那个特定的任务来说,这可能是矫枉过正,但我​​是怎么看的。

    您需要一个代理服务器,并在您的 MySQL 实例上禁止 IP 地址。

    然后你测试成功连接,直接从你的机器连接到 MySQL(它应该可以正常连接)。

    然后测试失败场景,通过代理重定向请求(我希望 MySQLClient 允许,无论如何你可以自己创建一个简单的代理)。在这种情况下,连接应该会失败。

    【讨论】:

    • 感谢您的回复!我不确定我是否可以让代理服务器执行此任务,因为正如您所说,这可能有些矫枉过正。我还担心可能存在的安全风险?你以前有过这方面的经验吗?
    • 您所说的安全风险是什么?我假设在某些测试 MySQL 数据库上的本地网络中所做的一切,不是吗?在你的情况下,代理的想法似乎是最可行的,把它想象成一个简单的应用程序,它运行另一台机器并重定向你的请求,所以请求会从另一个 ip “去” - 完全符合你的需要。
    • 我很高兴能够说我们使用的是本地数据库,但我被特别指示在实时资源上运行所有测试以反对推荐。感谢您的帮助和建议!我可能最终会使用它并将选择它作为答案
    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2020-07-27
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多