【问题标题】:JDBC versus Webservice for DB connection in mobile apps移动应用程序中用于数据库连接的 JDBC 与 Web 服务
【发布时间】:2013-11-16 03:54:03
【问题描述】:

我目前正在开发一个 android 应用程序,我将使用 MYSQL,以便该应用程序可以上传和下载信息。基本上,该应用程序具有安全的登录过程。为了登录,用户必须创建一个帐户,该帐户由用户名、电子邮件、密码组成。然后用户可以向服务器上传和下载文本和图片。

在移动应用程序中使用 JDBC 和 Web 服务连接到数据库的优缺点是什么?它们之间有什么区别?

在我的脑海中,我主要关心的两个问题是效率(时间和带宽)和安全性哪个更好?

【问题讨论】:

    标签: java android mysql web-services jdbc


    【解决方案1】:

    切勿使用来自远程设备的 JDBC 连接来连接服务器上的数据库!这是不安全的方式,因为您没有真正的方法来控制发送到数据库服务器的语句。

    我也永远不会将数据库服务器直接暴露在互联网上以接受 JDBC 连接,无论是来自移动设备还是常规桌面应用程序。

    编辑:

    这是对以下cmets的回应:

    谁说只有移动应用才能连接?使用数据包嗅探器查找 JDBC 连接的连接参数,您可以从命令行进行连接。然后你可以发送你想要的任何 SQL 语句。您可以尝试攻击数据库以获得管理员访问权限,您可以尝试查询数据库的元数据(表、列等),然后使用该信息窃取其他用户的登录数据...

    如果中间有网络服务,它也可能受到攻击,但没有办法直接攻击你的数据库。

    【讨论】:

    • 您能解释一下这里的安全问题到底是什么吗?如果所有移动应用程序帐户只能读取/写入非常特定的表,并且没有移动帐户具有管理员访问权限,那么这与使用 Web 服务执行相同过程有何不同?
    • 你说webservice可以被攻击,但是没有办法直接攻击数据库。这是真的?目前,我的 JSP 页面和我的数据库共享相同的 IP,但只是在不同的端口上运行。这可能是错误的做法(如果是这样,那么我所在的公司正在懈怠),但在我的情况下,攻击 Web 服务与攻击数据库是一回事。
    • 通常,我会使用防火墙规则阻止对数据库端口的所有远程访问。它应该只接受来自本地主机或来自同一网络的连接。除了 80 (HTTP)、443 (HTTPS) 和 22 (SSH) 之外,大多数端口也是如此。我也不会运行 FTP 服务器,而是使用 SCP(通过 SSH 端口 22)。
    • 需要启用远程访问,因为公司在不同城市的办事处需要访问此数据库。在这些给定的情况下,使用 JDBC 和 Web 服务之间有什么明显的区别?一个人可以从两者中嗅探数据包并知道目标 IP - 这对于数据库和 Web 应用程序都是相同的。我不明白的是为什么我不能只加密从android手机发送的数据并将其与数据库中的数据进行比较。
    • 如果它是一家大公司,他们肯定会有 VPN,所以它会被视为来自同一个网络。如果没有,我宁愿在那个数据库中没有合理的数据。
    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多