拦截从Android应用程序发送的HTTP请求

时间:2012-09-17 06:56:24

标签: android http

我有申请。我知道所有网址,参数,http请求类型等(这是我的应用程序)。

如何拦截来自应用程序的所有请求?例如 - 我按下了一个按钮,可以看到对服务器的请求文本。

任务 - 隐藏潜在黑客的请求并阻止他代表应用程序执行请求。

4 个答案:

答案 0 :(得分:0)

据我了解,你的问题包括两个问题:

如何检查服务器与客户之间的流量。

增加努力有几种可能性:

  • 日志记录:因为它是您的应用程序,您可以在调用http请求之前插入包含查询和参数的日志记录语句。
  • 侦听服务器端:由于它是您的应用程序,您也可以控制服务器。使用tcpdump之类的工具,您应该能够转储流量并在以后对其进行分析(例如,使用Wireshark
  • 倾听客户端:如果您想拦截客户端或“旁边”的流量,您可以尝试使用burpsuite使用代理拦截流量或直接在您的WIFI。

如何确保只有您的客户可以向服务器发出请求。 我建议使用https与客户端身份验证。您必须使用您的应用程序推出客户端证书,然后您的服务器可能会检查您的客户端的真实性。 Here您可以找到相互ssl身份验证的一般介绍。

答案 1 :(得分:0)

你并没有真正澄清为什么你在你的问题中这样做,但是对于其他人:想要这样做的最好的动机是因为你害怕你的应用程序是攻击者的目标,因为他们以某种方式强迫你的Intent(或其他RPC接口)行为不端。

我可以说这样做的最好方法是为您的应用提供尽可能有限的界面:不允许面向公众的意图或RPC接口操纵您的应用程序以发送您不想要的信息。

此外,您可以将(通过应用程序中的包装器)记录到发送到服务器的HTTP请求中。问题是,一旦你在客户的设备上记录了信息,你将用它做什么。能够正确识别应用程序何时执行“坏”操作几乎是不可能的,并且预设了“坏”的定义,因此这是一条错误的道路。

因此,即使您可以登录,即使您可以使用HTTPS,我也会说您应该调查攻击者可以用来操纵您的应用程序以将数据发送到您的Web服务的所有途径:从您开始实际上发送数据并通过应用程序向后工作!

答案 2 :(得分:0)

您可以加密邮件以防止黑客入侵。如果客户端和服务器都在您的控制之下,那么您可以使用任何密钥加密技术。这仅适用于私有HTTP客户端(如Android应用程序)。但对于像浏览器这样的通用HTTP客户端,您应该使用HTTPS(HTTP + SSL)而不是HTTP。

答案 3 :(得分:-1)

扩展WebViewClient,我覆盖方法shouldOverrideUrlLoading,如下所示:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

    String mainPage = "https://www.secureSite.com/myData/";

    if (url.startsWith(mainPage)) {
        view.loadUrl(url);
        return false;

    } else {

         //some dialog building code here

         view.stopLoading();
         return false;
    }
} // end-of-method shouldOverrideUrlLoading

因此,此代码的重点在于它会评估您的应用开始加载的每个网址。如果用户找到链接或尝试加载不属于您的域/指定URL的自己的URL,则它将不匹配且不会加载。

但是在您的Android清单中,您应该将android:exported属性设置为false,以防止其他应用程序使用它。

从下面here引用:

  

<强> 机器人:导出       其他应用程序的组件是否可以调用服务或与之交互 - 如果可以,则为“true”,否则为“false”。当值为“false”时,只有相同应用程序的组件或具有相同用户ID的应用程序才能启动该服务或绑定到该服务。

     

默认值取决于服务是否包含意图过滤器。没有任何过滤器意味着只能通过指定其确切的类名来调用它。这意味着该服务仅供应用程序内部使用(因为其他人不知道类名)。所以在这种情况下,默认值为“false”。另一方面,至少有一个过滤器的存在意味着该服务是供外部使用的,因此默认值为“true”。

     

此属性不是限制服务暴露给其他应用程序的唯一方法。您还可以使用权限来限制可以与服务交互的外部实体(请参阅权限属性)。

此属性也可用于ActivityProviderHere(活动)和here(提供商)是参考,但它与Service描述完全相同,只需替换Activity或{{ 1}} Provider