我正在为一个站点开发一个 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/