gpt4 book ai didi

java - 在Android应用程序中不要硬编码的内容

转载 作者:行者123 更新时间:2023-12-02 01:27:21 24 4
gpt4 key购买 nike

我知道将带有凭据,API-Key等的数据库连接字符串放进去真的很糟糕,因为您可以反编译它以查看值...

那么,doe的一切都需要在API后面吗?

例如,实际需要放在Web服务后面的内容:

是否需要将SQL查询放在Web服务后面,还是可以对存储过程进行参数化查询,这样就可以了吗?我假设这也需要在Web服务之后,并且只返回JSON数组等内容。

我真的没有看到关于不应该为移动应用程序提供网络服务的任何内容的清单。

我来自Web开发职位,因此到目前为止,这并不是真正的问题。

我们是否基本上需要通过Web服务来运行我们的应用程序,如果是这样,我们如何将Web Service与该应用程序合并,因为我们一开始就无法对Web服务的密钥进行硬编码?

摘要:

为了在数据库和android app客户端之间进行交换,我们是否需要创建一个全面的Web服务,对于任何第三方API来说都是一样的吗?

另外,由于此Web服务的目的是从一开始就防止硬编码密钥,因此我们如何授权android应用与我们的Web服务交互?

最佳答案

我知道将带有凭据,API-Key等的数据库连接字符串放进去真的很糟糕,因为您可以反编译它以查看值...


是的,这对于任何类型的应用程序都是非常糟糕的,无论是移动应用程序,Web应用程序还是物联网应用程序。


  那么,doe的一切都需要在API后面吗?


是的,您的应用程序需要尽可能的简单。换句话说,您的应用程序中的代码应仅尽可能地与表示有关,任何业务逻辑都应委派给API服务器。这种方法的巨大优势在于,只要您遇到错误,就只需要更新API服务器,而无需更新应用程序本身,然后等待所有客户端在其移动设备中对其进行更新。对于Web应用程序,您不想向在浏览器中按F12键并开始在开发人员工具面板中调试代码的任何人透露您的业务逻辑。


  是否需要将SQL查询放在Web服务后面,还是可以对存储过程进行参数化查询,这样就可以了吗?


正如我之前所说,APP必须尽可能地愚蠢,并且永远不要从客户端向任何类型的后端执行SQL查询,否则您的服务将面临巨大的安全漏洞。

从客户端到后端的任何东西都必须被视为潜在恶意,因为即使您认为自己知道世卫组织正在提出该请求,也可能不知道是由谁做出的。为了更好地了解WHO和访问服务器之间的区别,请阅读此图片所在部分中的this article



简而言之,WHO表示用户,WHO表示正在执行请求的应用程序/设备,如图所示,攻击者可能会利用中间人攻击来篡改它。


  我假设这也需要在Web服务之后,并且只返回JSON数组等内容。


Json是最常用的从API返回响应的格式,因为它很容易被人和机器读取,但是还存在其他格式。


  我真的没有看到关于不应该为移动应用程序提供网络服务的任何内容的清单。


虽然要求的列表可能不存在,但由于范围太广,您可以从在移动应用程序中避免OWASP Mobile Security Project - Top 10 risks开始。


  我来自Web开发职位,因此到目前为止,这并不是真正的问题。


尽管您可能未在Web应用程序中使用API​​密钥,但是如果您从它们中进行SQL查询,则您将面临SQL注入的风险,这是暴露于Internet的任何应用程序中最常见的风险,这种风险仍然存在。在OWASP Top 10 - 2017(pdf)的第一位置。


  我们是否基本上需要通过网络服务运行我们的应用程序


是的,您需要通过API服务器运行移动应用。


  如果是的话,我们该如何将Web服务与应用程序合并,因为我们一开始就无法对Web服务的密钥进行硬编码?


正如我在文章How to Extract an API Key from a Mobile App by Static binary analysis中所演示的那样,可以借助几种开源工具(例如,使用Mobile Security Framework)将其提取,但是您也可以使用MitM攻击来获取API密钥,如我在文章< aa>,使用开源工具Steal that API Key with a Man in the Middle Attack

那么现在该怎么办...如果我使用一个API密钥,则可以将其提取,但是如果我不使用它,则无法确定发出请求的原因。

您现在可以诉诸于采用多个防御层,从MiTM Proxy开始,然后是reCaptcha V3(WAF),最后如果您可以负担得起Web Application Firewall(UBA)解决方案,则可以采用。

Google User Behavior Analytics


  reCAPTCHA是一项免费服务,可保护您的网站免受垃圾邮件和滥用的侵害。 reCAPTCHA使用高级风险分析引擎和适应性挑战,以防止自动化软件参与您网站上的滥用行为。这样做是为了让您的有效用户轻松通过。
  
  ...可帮助您检测网站上的滥用流量,而不会引起用户的摩擦。它会根据与您网站的互动情况返回得分,并为您提供更大的灵活性以采取适当的措施。


reCAPTCHA V3


  Web应用程序防火墙(或WAF)过滤,监视和阻止与Web应用程序之间的HTTP通信。 WAF与常规防火墙的区别在于,WAF能够过滤特定Web应用程序的内容,而常规防火墙充当服务器之间的安全门。通过检查HTTP流量,它可以防止Web应用程序安全漏洞(例如SQL注入,跨站点脚本(XSS),文件包含和安全性错误配置)引起的攻击。


WAF - Web Application Firewall


  Gartner定义的用户行为分析(UBA)是一个有关检测内部威胁,针对性攻击和财务欺诈的网络安全流程。 UBA解决方案着眼于人类行为模式,然后应用算法和统计分析从这些模式中检测出有意义的异常,即表明潜在威胁的异常。 UBA不会跟踪设备或安全事件,而是跟踪系统的用户。像Apache Hadoop这样的大数据平台通过允许它们分析PB级的数据来检测内部威胁和高级持久威胁,正在增强UBA功能。


所有这些解决方案都基于否定性识别模型,换句话说,他们通过识别出什么不好而不是什么好来尽最大的努力来区分好与坏,因此尽管使用了先进的技术,但它们还是容易出现误报的情况他们中的一些人,例如机器学习和人工智能。

因此,您可能经常会发现自己不必放松放松如何阻止对API服务器的访问,以免影响良好的用户。这也意味着该解决方案需要不断监控,以确认误报不会阻止您的合法用户,同时他们会适当地阻止未经授权的用户。

关于为移动应用程序提供服务的API,可以通过使用移动应用程序证明解决方案来使用肯定的识别模型,该解决方案向API服务器保证可以信任请求,而不会产生误报。

行动应用程式证明

使用移动应用证明解决方案可以使API服务器知道正在接收的只是来自真正移动应用的请求。

移动应用程序证明服务的作用是在运行时通过在后台运行将与云中运行的服务进行通信的SDK来确保您的移动应用程序未被篡改或不在根设备中运行,以确保移动应用程序和设备的完整性正在运行。

在成功证明移动应用程序完整性后,将发布并签名一个短时生存的JWT令牌,并秘密告知只有云中的API服务器和移动应用程序证明服务。如果移动应用程序证明失败,那么将使用API​​服务器不知道的秘密对JWT令牌进行签名。

现在,应用程序必须与每个API一起发送,并在请求的标头中调用JWT令牌。这将允许API服务器仅在它可以验证JWT令牌中的签名和到期时间时才服务请求,而在验证失败时拒绝它们。

一旦移动应用程序不知道移动应用程序证明服务使用的机密,就无法在运行时对其进行反向工程,即使该应用程序被篡改,在有根设备中运行或通过正在作为连接的连接进行通信中间攻击中一名男子的目标。

移动应用证明服务已经作为Approov的SAAS解决方案存在(我在这里工作),该服务提供了多个平台的SDK,包括iOS,Android,React Native等。集成还需要在API服务器代码中进行少量检查,以验证由云服务发出的JWT令牌。 API服务器必须能够执行此检查,才能决定服务哪些请求和拒绝哪些请求。

回复您的摘要


  为了在数据库和android app客户端之间进行交换,我们是否需要创建一个全面的Web服务,对于任何第三方API来说都是一样的吗?


是的,您应该始终将访问权委托给任何类型的应用程序,移动设备,Web或IOT应用程序中的第三方服务,否则当攻击者获取凭据以开始使用它们并代表您使用它们时,您将遇到麻烦您将成为支付账单的人。


  另外,由于此Web服务的目的是从一开始就防止硬编码密钥,因此我们如何授权android应用与我们的Web服务交互?


移动应用证明解决方案在这里看起来最合适。

结论

在客户端运行的任何需要秘密访问API的内容都可能以不同的方式被滥用,您必须将对所有第三方API的访问权限委派给您所控制的后端,以便减少攻击面,并减少攻击的可能性。同时保护自己的秘密,以免被公众窥探。

最后,必须根据您要保护的内容的价值以及此类数据的法律要求(例如欧洲的GDPR法规)来选择用于保护API服务器的解决方案。

关于java - 在Android应用程序中不要硬编码的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56718141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com