php - android 应用程序与 web 服务通信的安全性

标签 php android database security

我正在为一个站点开发一个 android 应用程序,我在其中创建了一个功能,用户可以将数据发送到应用程序中的站点数据库。我在 android 代码中使用 PHP Web 服务和 URL 来连接到 Web 服务。 如何通过调试我的 apk 并将大量数据发送到站点并使站点关闭,从而使我的应用程序(和我的 php Web 服务)安全,没有人找不到 Web 服务 url。

任何使软件系统免受这些危险的提示都可以帮助我很多,谢谢。

编辑: 例如,现在我使用 AsyncTask 将我的 edittext 中的数据发送到 web 服务,如下所示。 我在 oncreate 中使用此代码以 AskServer() 的名称将数据发送到 AsyncTask 类:

link = "http://mywebservice-adrress/name.php";
new AskServer().execute(link, edttext.getText().toString());

这是我的 AsyncTask 类的 doInBackground :

@Override
    protected Object doInBackground(String... params) {
        BufferedReader buf = null;

        try {
            URL link = new URL(params[0]);
            URLConnection connect = link.openConnection();

            connect.setDoOutput(true);
            OutputStreamWriter osw = new OutputStreamWriter(connect.getOutputStream());
            String data = URLEncoder.encode("field","UTF8") +"="+ URLEncoder.encode(params[1], "UTF8");
            sw.write(data);
            osw.flush();
        } catch (Exception e) {e.printStackTrace();}

        return null;
    }// end doInbackground()

这是我的网络服务中的 php 代码:

<?php

include 'config.php';
$field=$_POST['field'];


mysql_query("insert into `wp_comments` (`comment_content`)
                    values('$field')");
?>

这是一个示例,我的真实代码向服务器发送了更多数据,也许上面的代码不起作用,我只是让我的问题更加准确和具体,因为 stackoverflow 需要我。 我的问题是如何使这些交易免受黑客的攻击,黑客可能会在上面的代码(参数 [0])中调试我的代码并找到我的 url 并将大量数据发送到我的网站并将其关闭。或者如何使用将数据发送到服务器的服务更安全地避免这些危险??

最佳答案

你不能以任何方式隐藏端点(你可以尝试,但你会失败)。如果应用程序可以请求某个 URL,每个人都可以。您可以看看像 cloudflare 这样的服务,但您应该查看应用程序的实际安全性。

您的问题“向我的网站发送大量数据并将其关闭”对于您的问题没有多大意义。为什么向您的服务器发送数据会导致其宕机?

除非您询问如何减轻 (D)DOS 攻击,这是完全不同的预防级别(使用昂贵的服务取得了一定的成功)。

您应该更担心的是应用程序的实际安全性,例如:

$field=$_POST['field'];


mysql_query("insert into `wp_comments` (`comment_content`)
                    values('$field')");

容易受到 SQL injection 的攻击.

这里也没有共享,但您可以使用例如查看应用程序端点的身份验证。 oAuth这样您就不必在应用程序本身中存储用户名+密码,而“只是”一个可以轻松撤销的访问 token 。

关于php - android 应用程序与 web 服务通信的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426579/

相关文章:

mysql - 选择名为 Titel 的列,其中 id 与另一个表相同

php - 在php mysql中创建多维关联数组

php - HTML表单使用PHP写入MySQL

android-如何为所有 cpu 架构编译 ffmpeg

java - 如何在 OnButtonClick 上显示 ProgressBar 5 秒,然后显示 TextView?

android - 在 Android MVVM 中绑定(bind)当前布局元素

php_ffmpeg 模块未在 Windows 7 中加载

php - 如何在表单提交中使用 PHP 函数进行操作?

c# - 如何识别文本中的模式并对其进行分类

mysql - 通信链路故障 - 使用 PhpStorm 连接到 MySQL