移动APP安全测试总结_第1页
移动APP安全测试总结_第2页
移动APP安全测试总结_第3页
移动APP安全测试总结_第4页
移动APP安全测试总结_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、移动AP吸全风险分析1.1、安全威胁分析安全威胁从三个不同环节进行划分,主要分为客户端威胁、数据传输端威胁和服务端的威胁。客户端数据传输服务端Internet面临的主要风险客户端数据传输p 加3山服务则数据窃听中间人攻击信息泄露业务逻辑漏洞SQL注入XSS上传漏洞暴力破解安全策略反编译防二次打包组件导出Webview 漏洞键盘安全屏幕截屏风险数据安全界面劫持本地拒绝服务数据备份风险Debug调试风险Android测试思维导图客户端A?F安全业务安全科克东度策略丁筠策弟要蒜足亘杂度要求,不冗琳珍玉弱匕有,认证失咬恢定量连续X定失败3次效力5次演起先3,单点登录限制茉第同一时间只九A一个麻号在

2、一个地方登陆,合活超门策略设S会话则时用潮g加分林,u;敬慈信危安全味W和密码输入惜决时均受力二外号或空码恺误”安仝退出客户璃在用户退出登录时,服务话要及时清除【生否性改验证更码传改变衰有对前窗码船“证I手一引口你我知消手嫄码收改时一妾升前手势在当进行认证手势密码:手外密码木地作息伴行码他信且烟带手外我能定笨畤违货多型证失股说定麻邑应烟谖APP加苗或者代码混滑或杳加克处理防二次打包为正好F签名至中二次打包后APF的笠名与SFlSfilAFF妥名曲行对比aci网体检则组件是理1祀外都应用出咫/ rxs组件枪则好件是否可以祓外部应同词即-:W-8二crd pm。垃组件检雉月件是否可以被外部应用划月

3、 bioadO 1sgius组件检则组件是否可以祓外信应用词而APP所H曰一的文件直累ATP所在日一又件其也比斯员不可侯岳/ 教潴一乂件的安全住圭安信息支行加定存诘效强安全/ LogeM日志同有敬感信息的调汉信息开关一定夏天闭 麻文在蚱Sdcard皴底数VT-存储在SDcard上面;APP-翕/何是舌存白全感信息,例2&xcm.tokcn、人奇寺口盘珈他者白湍开笈自帛文软城盘防止糖田却忤汝士他占安全,十一丁旭机荷卮田穴建起蓄户一时自定义软金半逸行随机化处理国寿整屏防止通过连袋猿3是否可以摧提到用户上码朝入隹的交码界面劫抄防止not w工ty被劫冷本地拒据帝芬使小叮Rch方式进行摘票所有异章以防

4、止应用出双拒霜用芬任应代西族。届道.elr/iev安全风圈 /、*距文存情扁二应用折蚱1备份AFFfi1.ndroL Wriifest. kwJ allovbackup星性退置为亍al迎debugiSlit美 ifldebug 调 lit 功能通过抓包工艮鱼看江户璃AFP也腥芬或逋齿是否采用http。逋值竞校聆:替户端桢存一包跟芬瑞证期豌音征兆的5, 中间会击史时眠若就江书和本地标簿的一叠。一:蕃户淋粒米由/湍证书械至、匾卷机构、目客白瑞访近的下T早否R能由手机客户诫访日黔证码m镒用一次,用宴印失效验证司/、盼证科有效异国刊,例$05细或者缈钟内有更任意咏2 注册优信也勿攻击业莽平行甜女越双肩

5、伺/二 T二、一幽灰、vxb应用常见后问:可如SQL注入, KSS,上传, 11套文件下轼萼等、反编译工具有两种反编译方式,dex2jar和apktool,两个工具反编译的效果是不一样的,dex2jar反编译出java源代码,apktool反编译出来的是java汇编代码。dex2jar主要是用来把之前zip解压出来的 classed.dex转成jar包的jd-gui主要是用来打开 Jar包的2、本地客户端安全反编译保护问题描述APP源代码对于一个公司是非常重要的信息资源,对APP的保护也尤为重要,APP的反编译会造成源代码被恶意者读取,以及APP的逻辑设计, 反编译方法 我们一般想要反编译一个

6、apk,无非就是想获得三样东西:图片资源、 XML资源、代码资源.图片资源获取首先准备一个apk,这里是一个.apk后缀的文件,我们先把后缀改成,zip,打开zip文件在res目录下,我们就可以获取到我们需要的图片了。.XML资源获取我们可以在刚刚打开的zip文件目录下看到很多.xml的文件,这个xml文件是无法直接打开的,当你尝试着打开的时候都是乱码或者是空白,那么我们要如何获取到这个 xml资源呢,这时候就需要借助一个jar包,就是它,axmlprinter2.jar ,这个东西你只要百度下,就能搜到。然后你把他放跟你解压出来的xml放在同级目录下,用 cmd命令找到这个目录, 我这边的示

7、例是将 xml放在了 E盘,大家卞据情况,cd到自己解压出来的目录下,然后执行java -jar AXMLPrinter2.jar xxxxx.xmlxxxxx.txt 这个时候你就能获取到xml里的东西啦.代码资源获取这个重中之重了,这也是我们主要想要获取到的东西。但是存在一点,这里能够正确反编译出来的只有未加密或者 没有混淆的代码,如果想要反编译一些加密或者混淆后代码,俺们就需要其他途径解决了首先要准备两样东西:dex2jar.rar和jd-gui.zip这两个工具。dex2jar主要是用来把之前 zip解压出来的 classed.dex转成jar包的 jd-gui主要是用来打开 Jar包

8、的dex2jar 用法:把dex2jar解压后,然后将之前 zip的classes.dex放到dex2jar目录下, 注意,必须要跟 dex2jar.bat是同级目录。然后又要用到cmd , cd到dex2jar目录下,打命令行dex2jar.bat classes.dex然后你的目录里会多一个jar包多了一个 classes-dex2jar.jar 的文件然后在用jd-gui把jar包打开,最终apk的代码就这样被剥离出来了检测方法通过反编译工具看是否能够对APP进行反编译修复方法采用加密和混淆技术达到反编译保护。混淆技术作用是增加了用户反编译后阅读代码的难度。APP二次打包二次打包描述“A

9、ndroicAPP二次打包”则是盗版正规 Android APP,破解后植入恶意代码重新打包。不管从性能、用户体验、外观 它都跟正规APP一模一样但是背后它确悄悄运行着可怕的程序,它会在不知不觉中浪费手机电量、流量,恶意扣费、偷窥隐私等等行为。面对二次打包不少公司都有自己的防范措施,知名公司的APP几乎都是自己在程序内部做过处理防止其APP被二次打包,一旦打包后重新运行则程序自动退出。接下来,我就来详解一下如何防止APP被二次打包。要实现代码内部防止 APP被二次打包首先得了解 APK的机器识别原理,APK的唯一识别是依靠包名和签名来做鉴定的,类似豌豆夹的洗白白、360手机卫士等安全软件对 A

10、PK的山寨识别,他们就是依赖包名来确定APK然后通过签名来确定其是否山寨。 所以说自己的程序内部在启动的时候可以通过获取APK本身的签名然后和正确的签名做对比来识别自己是否被二次打包。防二次打包检测方法利用二次打包工具对 APP进行二次打包,看APP能否成功打包运行,如果重新打包后无法运行程序说明有防二次打 包安全措施。防二次打包修复方法采用签名的方法进行保护:获取二次打包后APK的签名与正确的 APK签名做对比,判断 APK程序是否进行过二次打包。建议:客户端使用从属方证书进行签名后进行发布而不是使用第三方开发商的证书进行签名,以防开发商内部监管 异常,证书滥用的情况出现。组件导出安全四大组

11、件描述Android 主要包含 4 大组件,分别是 activity 组件、service 组件、content provider 组件和 broadcast receiver 组件。 Activity 组件一个Activity通常就是一个单独的屏幕(窗口)。Activity之间通过Intent进行通信。android应用中每一个 Activity都必须要在 AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行 该 Activity。Service 组件(1)service用于在后台完成用户指定的操作。(2)开发人员需要在应用程序AndroidManifest.xml

12、配置文件中声明全部的service,使用标签。(3)Service通常位于后台运行,它一般不需要与用户交互,因此 Service组件没有图形用户界面。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。Content Provider 组件android平台提供了 Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。(2)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须 存储在

13、一个内容提供者中。它的好处是统一数据访问方式。(3) ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为 android没有提供所有应用共同访问的公共存储区。broadcast receiver(1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个 activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种

14、方式来吸引用户的注意力,例如闪动背灯、震动、播放 声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。(2)广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。(3)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。四大组件总结4大组件的注册4大基本组件都需要注册才能使用,每个 Activity service Content Provider都需要在

15、 AndroidManifest文件中进行 配置。AndroidManifest文件中未进行声明的activity 服务以及内容提供者将不为系统所见,从而也就不可用。而broadcast receiver广播接收者的注册分静态注册(在 AndroidManifest文件中进行配置)和通过代码动态创建并以 调用Context.registerReceiver()的方式注册至系统。需要注意的是在 AndroidManifest文件中进行配置的广播接收者会随系统的启动而一直处于活跃状态,只要接收到感兴趣的广播就会触发(即使程序未运行)。4大组件的激活内容提供者的激活:当接收到 ContentReso

16、lver发出的请求后,内容提供者被激活。而其它三种组件activity、服务和广播接收器被一种叫做intent的异步消息所激活。组件安全检查方法1、AndroidManifest.xml文件中activity组件里面有设置 android:exported为true ,表示此组件可以被外部应用调用。2、AndroidManifest.xml文件中activity组件里面有设置 android:exported为false,表示此组件不可以被外部应用调 用。只有同一个应用的组件或者有着同样user ID的应用可以3、AndroidManifest.xml 文件中 activity 组件里面没有设

17、置android:exported 属性,但是有 intent -filter ,则 exported默认属性为true, true表示此组件可以被外部应用调用。4 AndroidManifest.xml 文件中 activity 组件里面没有设置 android:exported 属性,也没有设置 intent filter,则 exported 默认属性为false, false表示此组件不可以被外部应用调用。只有同一个应用的组件或者有着同样user ID的应用可以备注:采用drozer工具可以进行检测组件是否存在导出风险修复建议(1)如果应用的Service组件不必要导出,或者组件配置了

18、intent filter标签,建议显示设置组件的“android:exported属性为false(2)如果组件必须要提供给外部应用使用,建议对组件进行权限控制Webview漏洞WebView任意代码执行漏洞描述出现该漏洞的原因有三个WebView 中 addJavascriptInterface () 接口WebView 内置导出的 searchBoxJavaBridge_寸象WebView 内置导出的 accessibility 和 accessibilityTraversalObject 对象addJavascriptInterface接口引起远程代码执行漏洞JS调用Android的其

19、中一个方式是通过addJavascriptInterface接口进行对象映射,当JS拿至U Android这个对象后,就可以调用这个 Android对象中所有的方法,包括系统类(java.lang.Runtime类),从而进行任意代码执行。searchBoxJavaBridgejU 口引起远程代码执行漏洞在Android 3.0以下,Android系统会默认通过 searchBoxJavaBridge_勺Js接口给 WebView 添加一个JS映射对象: searchBoxJavaBridge岁寸象该接口可能被利用,实现远程任意代码。accessibility和accessibilityTra

20、versal接口引起远程代码执行漏洞问题类似以上检测方法addJavascriptInterface接口引起远程代码执行漏洞检查是通过addJavascriptInterface接口进行对象映射searchBoxJavaBridgejU 口引起远程代码执行漏洞检查是否通过 searchBoxJavaBridge_勺Js接口给WebView添加一个JS映射对象accessibility和accessibilityTraversal接口引起远程代码执行漏洞问题类似以上修复建议addJavascriptInterface接口引起远程代码执行漏洞Android 4.2 版本之后Google在Andro

21、id 4.2版本中规定对被调用的函数以JavascriptInterface进行注解从而避免漏洞x x xAndroid 4.2 版本之前在Android 4.2版本之前采用拦截 prompt ()进行漏洞修复。searchBoxJavaBridgejU 口引起远程代码执行漏洞删除 searchBoxJavaBridgeJU 口/通过调用该方法删除接口removeJavascriptInterface ();accessibility和accessibilityTraversal接口引起远程代码执行漏洞删除 accessibility 和 accessibilityTraversal 接 口密

22、码明文存储漏洞描述WebView默认开启密码保存功能:mWebView.setSavePassword(true)开启后,在用户输入密码时,会弹出提示框:询问用户是否保存密码;如果选择是,密码会被明文保到/data/data/databases/webview.db 中,这样就有被盗取密码的危险检测方法方法1、用户输入密码时看是否有弹出提示框,询问用户是否保存密码,如果有询问则表示存在漏洞,否则不存在。方法2、检查代码中 setSavePassword的值是否为false。修复建议关闭密码保存提醒WebSettings.setSavePassword(false)数据安全-本地敏感信息安全AP

23、P所在目录的文件权限、问题描述测试客户端APP所在目录的文件权限是否设置正确,非 root账户是否可以读,写,执行 APP目录下的文件。检测方法采用ls -查看app目录的文件权限,其它组成员不允许读写权限。Linux文件权限为第一个为文件所有者对此文件的权限,第二个为所有者所在组的其它成员对此文件的权限,第三个为其他组成员对此文件的权限。修复建议检查App所在的目录,其权限必须为不允许其他组成员读写SQLite数据库文件的安全性描述SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统.是开源的,高效率的,可嵌入且程序驱动的数据库。我们都知道,Android系统内置了 SQL

24、ite数据库,并且提供了一整套的API用于对数据库进行增删改查操作。数据库存储是我们经常会使用到的一种存储方式,相信大多数朋友对它的使用方法都已经比较熟悉了吧。在Android中,我们既可以使用原生的 SQL语句来对数据进行操作,也可以使用Android API提供的CRUD方法来对数据库进行操作, 两种方式各有特点,选择使用哪一种就全凭个人喜好了。不过,使用SQLite来存储数据却存在着一个问题。因为大多数的 Android手机都是Root过的,而Root过的手机都 可以进入到/data/data/databases目录下面,在这里就可以查看到数据库中存储的所有数据。如果是一般的数据还 好,

25、但是当涉及到一些账号密码,或者聊天内容的时候,我们的程序就会面临严重的安全漏洞隐患。检测方法手机进行root之后,查看/data/data/databases下的数据库文件是否包含敏感信息。修复建议重要信息进行加密存储Logcat 日志描述检测客户端对应的 Logcat日志是否会打印一些用户或服务器的敏感信息。检测方法通过usb连接手机,然后使用adb logcat -v time d:xx的方式获取logcat信息或者使用DDMS工具查看logcat信息。修复建议具有敏感信息的调试信息开关一定要关闭。对于安卓开发来讲,我们解决敏感信息问题就是对重要数据进行加密存储,10g日志不打印敏感信息。

26、切记不要把账号密码等敏感信息保存在本地明文存储,如果一定要存储敏感信息务必进行加密存储重要信息。敏感数据明文存储于 Sdcard描述Android提供了几种保存持久化应用数据的选择,其中之一就是外部存储( /sdcard,/mnt/sdcard )。外部存储包括设 备内部的微型或标准大小的SD卡,挂载到PC上的Android设备存储卡以及 Android/obb目录。Android4.1之前的版本,存放在外部存储的文件是world -readable (能够被任何用户读取的)和 world -writable (能够被任何用户写入)。从Android4.1到Android4.3 ,一个app想

27、要写入外部存储的任意文件时,只需在AndroidManifest文件中声明 WRITE_EXTERNAL_STORAGE限。但从Android4.4开始,引入了基于目录结构创建分组和文件模式,这 使得一个app在外部存储中的只能在以自己包名命名的目录下才具有文件的读写权限。非系统级的app只允许在Android/data/目录下操作。因此,每个app的文件读写权限被独立开来,不能互相访问。上面描述的访问权限限制的不足,导致写入到外部存储的文件可能存在被同一设备上不同的app修改和读取的风险(Android4.4 之前版本)。检测方法查看是否有代码把内容写入到外部存储设备。修复建议在将文件保存到

28、外部存储之前,先对文件内容进行加密。键盘安全风险键盘劫持测试描述安卓应用中的输入框默认使用系统软键盘,手机安装xx启,xx取:以通过替换系统软键盘,记录应用的密码。检测方法通过观察app在输入密码的地方是否会弹出自定义的软键盘。修复建议建议客户端开发自定义软键盘而不是使用系统软件盘以防止键盘劫持x xox软键盘安全性测试描述测试客户端是否使用随机布局的密码软键盘。检测方法用眼观察每次弹出来的自定义的软键盘是否随机变化布局修复建议建议客户端对自定义软键盘进行随机化处理,同时在每次点击输入框时都进行随机初始化。屏幕录像测试描述测试通过连续截图,是否可以捕捉到用户密码输入框的密码。检测方法通过连续截

29、图,是否可以捕捉到用户密码输入框的密码。修复建议建议客户端针对第三方或系统截屏编写抵抗逻辑,例如屏蔽和截屏相关的函数或是当客户端处于进程栈顶层时将截屏图片用纯黑XX序对象进行覆盖。界面劫持保护界面劫描述Activity劫持是指当启动某个窗口组件时,被恶意应用探知,若该窗口界面是恶意程序预设的x 象,恶意应用将启动自己仿冒的界面覆盖原界面,用户在毫无察觉的情况下输入登录信息,恶意程序在把获取的数据返回给服务端。需要理解,Android启动一个 Activity时,是这样设计的,给 Activity加入一个标志位 FLAG_ACTIVITY_NEW_TASK比 能使它置于栈顶并立马呈现给用户。但是

30、这样的设计却有一个缺陷。如果这个Activity是用于盗号的伪装 Activity呢? 这种现象在XcodeGhost事件中,已经被证实是可以实现的。在Android系统当中,程序可以枚举当前运行的进程而不需要声明其他权限,这样的话,就可以编写一个程序,启动一个后台的服务,这个服务不断地扫描当前运行的进程,当发现目标进程启动时,就启动一个伪装的Activity o如果这个Activity是登录界面,那么就可以从中获取用户的账号密码,具体的过程如下图:界面劫持防护方法作为一名移动应用开发者,要防御APP被界面劫持,最简单的方法是在登录窗口等关键Activity的onPause方法中检测最前端Ac

31、tivity应用是不是自身或者是系统应用。如果检测到不是自己,则弹出告警或者退出。界面劫持案例应用存在钓鱼劫持风险。应用程序没有做防钓鱼劫持措施,通过劫持应用程序的登录界面,可以获取用户的账号和密码,可能导致用户账号信息的泄露。嫄犀盼巴B中4 10:33口电话号码注册忘记密码整改建议应用程序自身通过获取栈顶activity ,判断系统当前运行的程序,一旦发现应用切换(可能被劫持),给予用户提示以防范钓鱼程序的欺诈。获取栈顶activity (如下图),当涉及敏感activity (登录、交易等)切换时,判断当前是否仍留在原程序,若不是则通过Toast给予用户提示。使用HTML5架构或andro

32、id+HTML5混合开发,实现登陆、支付等关键页面,降低被劫持的风险。本地拒绝服务漏洞描述Android系统提供了 Activity、Service和Broadcast Receiver等组件,并提供了 Intent机制来协助应用间的交互与通讯, Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android系统则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用1。Android应用本地拒绝服务漏洞源于程序没有对Intent.getXXXExtra()获取的异常或者畸形数据处理时没有进行异常捕获,从而导致x X#可通过向受

33、害者应用发送此类空数据、异常或者畸形数据来达到使该应用crash的目的,简单的说就是 x X#通过intent发送空数据、异 常或畸形数据给受害者应用,导致其崩溃。本地拒绝服务漏洞影响范围:Android系统所有版本漏洞检测方法使用Android扫描工具可以进行扫描。修复建议本地拒绝服务漏洞修复建议:1)将不必要的导出的组件设置为不导出出于安全考虑,应将不必要的组件导出,防止引起拒绝服务,尤其是杀毒、安全防护、锁屏防盗等安全应用;在AndroidMenifest.xml 文件中,将相应组件的 android:exported属性设置为 false如下示例:intent处理数据时进行捕获异常建议

34、处理通过Intent.getXXXExtra()获取的数据时进行以下判断,以及用 try catch方式进行捕获所有异常,以防 止应用出现拒绝服务漏洞:1)空指针异常;2)类型转换异常;3)数组越界访问异常;4)类未定义异常;5)其他异常;数据备份 allowBackup漏洞描述Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用 程序中AndroidManifest.xml文件中的 allowBackup 属性值,其属性值默认是True。当 allowBackup 标志为 true时,用户即可通过adb backup和

35、adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。Android 属性allowBackup安全风险源于 adb backup容许任何一个能够打开USB调试开关的人从 Android手机中复制应用数据到外设,一旦应用数据被备份之后,所有应用数据都可被用户读取;adb restore容许用户指定一个恢复的数据来源(即备份的应用数据)来恢复应用程序数据的创建。因此,当一个应用数据被备份之后,用户即 可在其他Android手机或模拟器上安装同一个应用,以及通过恢复该备份的应用数据到该设备上,在该设备上打 开该应用即可恢复到被备份的应用程序的状态。尤其是通讯录应用,一旦应

36、用程序支持备份和恢复功能, x x者即可通过 adb backup和adb restore进行恢复新安 装的同一个应用来查看聊天记录等信息;对于支付金融类应用,x xW通过此来进行恶意支付、盗取存款等;因此为了安全起见,开发者务必将 allowBackup标志值设置为false来关闭应用程序的备份和恢复功能,以免造成信息泄露和财产损失。1、不在AndroidManifest.xml文件设置 allowBackup属性值,其默认值为 true,则应用可通过 adb命令进行备份 整个应用的数据AndroidManifest.xml 文件内容: 2、在 AndroidManifest.xml 文件显

37、示设置 allowBackup 属性值为 false,即 android:allowBackup=false,则 Android 应 用不可通过adb命令进行备份和恢复整个应用的数据AndroidManifest.xml 文件内容: 检测方法查看AndroidManifest.xml文件中是否有 allowBackup,如果没有则 allowBackup属性值,默认allowBackup值为True, 则默认为可以备份应用数据,存在安全风险;如果 allowBackup属性值为false,则不可以备份应用数据。修复方法把 AndroidManifest.xml 文件中 allowBackup

38、属性值设置为 false。Debug调试描述在准备发布应用之前要确保关闭debug属性,即设置 AndroidMainifest.xml中android:debuggable=false , false表示关闭debug调试功能,true表示开启debug调试功能,但是有时候会忘记关掉这个属性。Debug调试开启会存在应用被调试的风险。检测方法在发布之前最好进行测试,使用 aapt工具: aapt list -v -a myfile.apk这个命令将会打印和apk相关的所有详细信息,找到 android:debuggable;它的值分为:0 x0: debuggable false0 xfff

39、fffff: debugabble true例如,在我的测试中,这一行的信息是:A: android ebuggable(0 x0101000f)=(type 0 x12)0 x0这说明我的 Release Build已经关闭了 debuggable!修复建议把 debuggable 关闭android:debuggable=false3、通信过程安全通信保密性采用HTTPS通信描述验证客户端和服务器之前的通信是否使用https加密信道,采用https协议通信可以防止信息在传输过程被窃听的风检测方法通过抓包工具(例如 burpsuite fiddler)抓取通信信息,看是否进行加密通信。修复建

40、议使用https进行加密通信。SSL劫持x x TE书校验描述目前虽然很多 Android APP使用了 https通信方式,但是只是简单的调用而已,并未对SSL证书有效性做验证,https通信只是对通信信道进行了加密,可以防止监听数据的风险,但是无法防止中间人xx式,通过中间人拦截代理方式可以让采用 https通信的数据暴露无遗,这样xxa就可以利用中间人拦截代理来做劫持xx,x这种漏洞让https形同虚设,可以轻易获取手机用户的明文通信信息。证书校验是为了防止中间人劫持xx, 6为强校验和弱校验。强校验就是在手段端先预埋好服务端的证书,当手机端与服务端通信时获取证书,并且与手机本地预埋的服

41、务端证书做对比,一旦不一致,则认为遭到了中间人劫持xx,x自动断开与服务端的通信。弱校验则是在手机端校验证书的域名和手机真实访问的域名是否一致、证书颁发机构等 信息。强校验流程图:APP服务器弱校验流程图:APP服务器方案对比力杀优点缺点强校验:服务器证书锁定安全性最高,实施XX必 须拿到对应服务器私钥 证书。更换证书时APP影响大弱校验:根证书锁定+域 名验证更换服务器证书不受影 响安全性和CA机构以及域 名验证机制有美。检测方法通过抓包看手机端程序是否运行正常,如果通过代理方式抓包,手机APP自动强制退出,说明手机APP有做证书校验。整改方法采用强校验或者弱校验方法。访问控制描述测试客户端

42、访问的URL是否仅能由手机客户端访问。是否可以绕过登录限制直接访问登录后才能访问的页面,对需要二次验证的页面(如私密问题验证),能否绕过验证。检测方法利用截包工具获取 url,能用浏览器打开该 urL修复建议建议服务器进行相应的访问控制,控制对应页面仅能通过手机客户端访问。同时进行页面访问控制,防止绕过登陆 直接访问页面的非法访问。4、服务端安全安全策略设置密码复杂度策略描述测试客户端程序是否检查用户输入的密码,禁止用户设置弱口令检测方法修改设置用户名密码时,可以设置111111类似弱口令修复建议建议在服务器编写检测密码复杂度的安全策略,并将其运用到账号注册,密码修改等需要进行密码变更的场景,

43、以防止X X#通过弱密钥遍历账户的方式进行暴力猜解。认证失败锁定策略描述测试客户端是否限制登录尝试次数。防止X X使用穷举法暴力破解用户密码检测方法错误密码登录t#求多次(10次以上还没有就有问题了,一般都是3次)修复建议建议在服务端编写账户锁定策略的逻辑,当一天内多次输入密码错误时进行账号锁定以防止X X#通过暴力猜解密码。单点登录限制策略描述测试能否在两个设备上同时登录同一个帐号。检测方法测试能否在两个设备上同时登录同一个帐号。修复建议建议在服务器进行账号登陆限制相应逻辑代码的编写,通过Session或数据库标志位的方式控制同一时间只有一个设备可以登陆某一账号。会话超时策略描述测试客户端在一定时间内无操作后,是否会使会话超时并要求重新登录。超时时间设置是否合理。检测客户端在一定时间内无操作(20分钟足够),是否会话超时登录建议建议在客户端编写会话安全设置的逻辑,当 10分钟或20分钟无操作时自动退出登录状态或是关闭客户端。界面切换保护描述检查客户端程序在切换到后台或其他应用时,是否能恰当响应(如清除表单或退出会话),防止用户敏感信息泄露检测方法应用切换到后台但程序没有结束运行,再返回应用的时候是否有身份验证,手势密码或者登陆密码。修复建议建议客户端添加响应的逻辑,在进行进程切换操作时提示用户确认是否为本人操作。UI敏感信息安全描述检查客户端的各种功能,看是否存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论