【问题标题】:How to connect android to mysql database securely如何安全地将android连接到mysql数据库
【发布时间】:2016-07-14 22:25:09
【问题描述】:

我有一个梦想主机的 phpmyadmin 设置。例如,我想从 android 的数据库中检索用户名和密码,我该怎么做呢?要访问我的数据库,我需要数据库的用户名和密码,那么如何通过 android 进行连接,而人们无法查看我的应用程序的源代码并查看数据库凭据?

编辑: 我的一个很大的误解是,我在哪里存储 php webservice 文件?不在设备上,对吧?

【问题讨论】:

    标签: android mysql database security


    【解决方案1】:

    您可以直接连接到 MySQL,但这不是一个好的做法,特别是对于生产应用程序。我的建议是使用有助于连接的 Web 服务。

    Web 服务是企业的 Web 服务器为 Web 用户或其他与 Web 连接的程序(在本例中为您的 Android 应用)提供的服务。

    这是一个很好的教程,可以帮助您入门Android, MySQL and PHP

    【讨论】:

    • 你当然可以通过JDBC直接连接MySQL,虽然不同版本有很多问题。但这是可能的。
    • 可能,但不是一个好的做法,特别是对于生产应用程序。我会更新我的答案。
    • 我是 web/android 开发的新手。我浏览了教程,但我仍然不太了解 Web 服务。 php文件是网络服务吗?我仍然对存储数据库登录凭据以从中提取信息的位置感到困惑
    • 是的,php 文件将充当 web 服务。您可以将数据库凭据存储在 php 文件中,这样任何人都无法看到它们。
    • php 文件将存储在哪里?
    【解决方案2】:

    创建一个类来向服务器发出 HTTP 请求。例如(我使用 JSON 解析来获取值):

    public class JSONfunctions {
          public static JSONObject getJSONfromURL(String url) {
            InputStream is = null;
            String result = "";
            JSONObject jArray = null;
    
            // Download JSON data from URL
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(url);
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
    
            } catch (Exception e) {
                Log.e("log_tag", "Error in http connection " + e.toString());
            }
    
            // Convert response to string
            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(
                        is, "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                result = sb.toString();
            } catch (Exception e) {
                Log.e("log_tag", "Error converting result " + e.toString());
            }
    
            try {
                jArray = new JSONObject(result);
            } catch (JSONException e) {
                Log.e("log_tag", "Error parsing data " + e.toString());
            }
    
            return jArray;
          }
        }
    

    在您的 MainActivity 中,使用 JsonFunctions 类创建一个对象,并将您希望从中获取数据的 URL 作为参数传递。例如:

    JSONObject jsonobject;
    jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");
    

    然后最后读取 JSON 标签并将值存储在 ArrayList 中。稍后,如果需要,可以在 ListView 中显示它们。

    您可能会在这里找到答案Can an Android App connect directly to an online mysql database

    【讨论】:

    • 一个http连接?真的吗?你找不到更安全的东西吗?喜欢 https?
    • 先让他试试http,然后他可以转到https
    • 那么我让你更新你的答案,强调在这种情况下使用 http 是多么不安全,因为网络上的任何人都可以窃取他的数据库密码
    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 2013-12-25
    • 1970-01-01
    • 2012-09-14
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多