iOS小技能: get 和post 布尔值参数处理、按照时间分页的数据重复的处理

简介: 1. get 和post 布尔值参数处理:如果后台Bool 参数没有同时支持【 0,1】 ;和【 true false】,get请求的时候就需要特殊处理。2. 按照时间分页的数据重复的处理

前言

  1. get 和post 布尔值参数处理:如果后台Bool 参数没有同时支持【 0,1】 ;和【 true false】,get请求的时候就需要特殊处理。
  2. 按照时间分页的数据重复的处理

I、使用NSNumber 传BOOL值的处理

使用NSNumber 传BOOL值参数时,需要区分get 和Post进行处理。

get请求对应的0和1,post对应true/false:若服务端Bool 参数没有同时支持这两种格式,就需要处理。

1.1 问题分析:

使用NSNumber 传BOOL值的时候,get 和post对应的参数不一致

    [params setValue:[NSNumber numberWithBool:self.viewModel.multipleSwitchCellTableViewCellModel.IsSon] forKey:@"IsSon"];//

这个代码使用Post 会将请求参数IsSon 自动转为true/false

在这里插入图片描述

但是get 请求的时候就是默认0和1 不会进行将参数IsSon 自动转为true/false

在这里插入图片描述

1.2 解决方案

如果后台get请求没有同时支持【 0,1】 ;和【 true false】,只支持true false的时候,就需要特殊处理。

  • get请求的正确处理
    // get  不会自动转为     "IsSon": true,//        "IsSon": false,
//get  需要自己处理
    if(self.viewModel.multipleSwitchCellTableViewCellModel.IsSon){
        [params setValue:@"true" forKey:@"IsSon"];//

        
    }else{
        
        [params setValue:@"false" forKey:@"IsSon"];//

    }

在这里插入图片描述

II 按照时间分页的数据重复的处理

2.1 数据重复原因

问题:按照时间分页的数据重复
原因:请求下一页之前,有新的数据入库

2.2 解决方案

解决方案:分页接口新增一个请求参数,用于记录第一页的最大排序时间(比如第一条记录的交易时间)。

2.3 案例

例子:账单流水分页接口新增一个请求参数MaxCompleteTime最大交易时间,存储的是第一页的第一条记录的交易时间,用于处理下一页返回的数据。避免请求第一页之后,有新数据入库,导致第二页返回的数据和第一页重复。

用法: MaxCompleteTime是上一页的第一条交易记录的完成时间CompleteTime。
"MaxCompleteTime" : "2022-11-10 17:33:58"

III 扩展:敏感逻辑的保护

3.1 把函数名隐藏在结构体里,以函数指针成员的形式存储

把函数名隐藏在结构体里,以函数指针成员的形式存储。

编译后,只留了下地址,去掉了名字和参数表,提高了逆向成本和攻击门槛
//  Created by devzkn on 18/09/2017.
//  Copyright © 2017. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface KNUtil : NSObject



/**
 把函数名隐藏在结构体里,以函数指针成员的形式存储。
 
 编译后,只留了下地址,去掉了名字和参数表,提高了逆向成本和攻击门槛
 */
typedef struct _util {
    void (*checkKNSign)(char *keys[], unsigned char *output);
}CheckKNSignUtil_t ;


#define ShareKNUtil ([KNUtil sharedUtil])

+ (CheckKNSignUtil_t *)sharedUtil;
  • 调用方法
     ShareKNUtil->checkKNSign(key, output);

3.2 使用宏进行替换字符串

  • 根据前缀搜索出需要混淆的类名、方法名, 生成对应的宏文件
#define run OmWJoTZfCqoPshvr
#define iosre egnjoOFDrFiQVRgr
静态分析时hopper等反汇编工具无法根据string搜索到关键字符

see also

公号:iOS逆向

目录
相关文章
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
1411 4
|
JSON JavaScript 安全
iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据
iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据
334 1
|
iOS开发 开发者
iOS平台RTMP|RTSP播放器如何实时回调YUV数据
我们在做RTMP、RTSP播放器的时候,有开发者需要自己处理拉取到的YUV数据,做二次分析之用,为此,我们做了以下的设计:InitPlayer之后,再调用SmartPlayerStart()接口之前,设置yuv数据回调即可。
274 6
|
移动开发 小程序 API
uniapp通过蓝牙传输数据 (ios)
uniapp通过蓝牙传输数据 (ios)
1100 1
|
Java iOS开发
iOS的数据序列化(又称持久化)的两类使用方式
iOS的数据序列化(又称持久化)的两类使用方式
227 0
|
Web App开发 网络安全 Android开发
🚀2023最新版克魔助手抓包教程(9) - 克魔助手 IOS 数据抓包
在移动应用程序的开发中,了解应用程序的网络通信是至关重要的。数据抓包是一种很好的方法,可以让我们分析应用程序的网络请求和响应,了解应用程序的网络操作情况。克魔助手是一款非常强大的抓包工具,可以帮助我们在 Android 和 iOS 平台上进行数据抓包。本篇博客将介绍如何使用克魔助手在 iOS 平台上进行数据抓包。
|
Java 开发工具 Android开发
SLS:使用 OTel 官方 SDK 采集 Android、iOS Trace 数据实践
本文介绍了使用 OTel 官方 SDK 采集 Android、iOS Trace 数据实践。
1404 7
SLS:使用 OTel 官方 SDK 采集 Android、iOS Trace 数据实践
|
iOS开发
iOS开发 GET、POST请求方法:NSURLSession篇
iOS开发 GET、POST请求方法:NSURLSession篇
183 0
|
PHP iOS开发
iOS GET/POST请求
GET请求 // GET请求 - (void)get { NSString *name = @"张三"; NSString *pwd = @"zhang"; NSString *strUrl = [NSString stringWithFormat:@"http://127.
812 0