iOS之关于开发的那点破事(一)

前言:

前段时间,经理突然找我说:能不能在项目中对缓存的图片进行加密?当时就感到疑惑,就说:可以是可以,但为什么要这样做?有什么意义没?

我们都知道,apple使用的是沙盒(sandbox)机制,这种机制是:在受限的安全环境中运行应用程序的一种做法,而这种做法是要限制授予应用程序的代码访问权限。

所以才有这样的疑问:为什么还要对缓存的图片加密呢?于是经理立马打电话对客户说了原因,觉得没必要再做加密。但得到的回答是:有越狱的手机可以看到。。。。我那个无语啊??。

没办法,那就想办法呗。立马想到的是两种方案:

1)网络请求下来的图片网址(imgUrl)手动加密存储。

2)修改第三方库(例如:EMAsyncImageViewSDWebImage等)。

下面一个个说一下:

1、网络请求下来的图片网址(imgUrl)手动加密存储

大概的代码是这样的:

 UIImage *image = [[UIImage alloc]init];

    NSData *imageData = UIImagePNGRepresentation(image);

    //加密成data类型
    NSData *base64Data = [imageData base64EncodedDataWithOptions:0];

    //加密成字符串
    NSString *base64String = [imageData base64EncodedStringWithOptions:0];

然后对data或者base64String 存储到本地就行了。读取时先进行解密,在使用就可以了

具体的base64加解密可以看 Base64加密和DES加密、以及JAVAiOSDES加密统一性问题

2、修改第三方库(例如:EMAsyncImageView、SDWebImage等)

这种方案就比较麻烦了,当然这种麻烦不是说修改比较麻烦,以后的维护也是问题。

2.1、EMAsyncImageView

这个库比较早了,估计除了老的项目,现在使用的就不多了。值得一提的事:这个库并不像SDWebImage一样,它是直接返回的imageView

使用大抵就是这样:

#import "EMAsyncImageView.h"

@property (weak, nonatomic)EMAsyncImageView   *imageView;

imageView.imageUrl = [NSURL URLWithString:imgUrl]; 

2.2、SDWebImage

SDWebImage的使用,现在来说事比较多的,很是受欢迎,也很是简单。

Objective-C:   

#import <SDWebImage/UIImageView+WebCache.h>//(我使用时添加的头文件:#import "UIImageView+WebCache.h")

  [imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]

                 placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

对于使用就不多说了。我这里说一下思路吧。如果有看过SDWebImage就会知道。这个图也对图片首次加载进行缓存的,缓存后,下次加载就直接从本地读取了,这样做的好处不言而喻。并且为了保证图片的唯一性:SDWebImage的做法是对图片的名字进行加密,以此确保图片的唯一性。

那么现在步入正题:怎样在SDWebImage缓存的图片进行加密呢?其实做法很简单,方法是和手动图片加密一样的。至于关联SDWebImage里面的代码,这点是关键。

但这样做只有弊端是:已有的多个项目修改繁琐、项目维护困难。

3、iOS--越狱检测

之后是这样回复经理的:这种功能可以实现,但费时费力,也不好维护。这只是一个为了防止越狱手机使用的功能,付出与效果不成正比(毕竟越狱手机占少数)。

但问题还在呢,于是有了另一个想法:对项目进行防越狱。app对手机进行越狱检测:如果是越狱手机,无法安装app

到这里这件破事才算告一段落。。。。。。。??????????????????

具体的防越狱方法我就不一一列出了,可以看这里,挺详细的:iOS越狱检测总结及代码实现(JailBreak)

时间: 2024-11-02 06:31:20

iOS之关于开发的那点破事(一)的相关文章

iOS应用安全开发,你不知道的那些事

来源:http://www.csdn.net/article/2014-04-30/2819573-The-Secret-Of-App-Dev-Security 摘要:iOS应用由于其直接运行在手机上,相比运行在服务器的后台服务,更有可能被黑客攻击.本文将从网络安全.本地文件和数据安全.源代码安全三个方面,阐述iOS应用在安全性上遇到的挑战. 联网领域,安全已然是一个老生常谈的话题.许多大公司都设置有专门的安全部门,用于检测自己产品的安全性.但即便是这样,业界仍然时常爆出许多安全问题引发的新闻.

【Android开发那点破事】消息推送BroadcastReceiver,点击通知打开两次Activity问题

Android开发中,通常会使用BroadcastReceiver来接受Push推送消息.当APP收到推送通知时,我们需要在通知的点击事件中加入自己的逻辑.比如跳转到MainActivity.比如下面的代码(注意红色部分): public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if (JPushInterface.ACTION_REGISTRATION_ID.equ

[Android开发那点破事]解决android.os.NetworkOnMainThreadException

[Android开发那点破事]解决android.os.NetworkOnMainThreadException 昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003.第一感觉就是好卡,果断刷机.以前是Android 2.3的系统.回来刷成了4.4. 好了,问题来了.在我用手机测试我们的APP的时候,抛出一个如题的异常:android.os.NetworkOnMainThreadException 第一次看到这异常,字面意思是说:在主线程中的网络异常.然后我就去了解了下这个异常,

【Android开发那点破事】Android 真机调试之甩开USB线

生命在于折腾,前段时间把服务器代码收拾的差不多了,现在又来开始捣鼓我们可爱的Android了. 当第一眼看到这长长的USB连接线我就烦躁,无线网络都那么普遍了,为什么我调试个程序还得连着USB线呢?现在连无线鼠标都甩开了,就剩个无线电源了.现在搞跟长长的USB线连着电脑,用着非常不爽.本着一颗不爽的心就尝试查找了下如何利用wifi调试我们的代码.结果还真找到了. 步骤如下: 1.在android手机里安装一个叫adbWireless的app,自己去搜下,这里我也给个连接:http://www.c

对比Windows Phone与iOS、Android开发的不同[转]

Windows Phone是微软公司在2010年发布的智能手机操作系统,目前最新版本是Windows Phone 8.0,在市面上能见到的是Windows Phone 7.5(Mango和Tango),下面,从开发者角度,分几个方面对比他们的不同. 一.硬件 iOS与Windows Phone系统都为闭源操作系统,而且对于硬件解决方案,微软和苹果都有苛刻的要求,苹果自己设计CPU,然后找代工厂商生产,而且通信芯片也是非高通不用,这也是中国移动一直无法引入苹果定制机的一个重要原因. 在微软方面,微

iOS 9应用开发教程之显示编辑文本标签文本框

iOS 9应用开发教程之显示编辑文本标签文本框 ios9显示.编辑文本 在iOS,经常会看到一些文本的显示.文字就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些设备要表达的信息.本节将主要讲解在iOS中,用来显示和编辑文本的三个视图:标签.文本框和文本视图. ios9只读文本——标签 标签视图是一个只读的文本视图,它用于在应用程序中为用户显示少量的信息,如图2.16所示.在此图中文字的显示使用的就是标签视图.标签视图一般使用UILabel类实现.   图2.16  美容相机 [示

java开发中的那些事(5)--------一点经历,败给2分钟的2个小时

特意记下这个经历,这个让我感慨万千又斗志昂扬的一次经历,这是经验,也是生活. 故事的始末是这样的,先给大家上几句代码,现在身在家中,只能凭记忆敲打几行,大致意思倒不会错: {field:'code',align:'center'} {field:'btfid',align:'center',hidden:'true', formatter:function(value,row,rowIndex){ return "<a href="javascript:void(0)"

java开发中的那些事(3)-------最常用到的几个快捷键

今天去看了韩寒的<后会无期>,感慨颇多. 这里记录下现在常会用到的几个快捷键,不多,却是当前最常用到: 1.ctrl+f  ----------------"搜索", 这个应该在大多数人来说都太简单了,可惜我也是知道不长时间: 2.ctrl+shift+r  --------"工程内搜索",这个也是搜索,不过是搜索整个工程的,这个知道后美滋滋了好久: 3.ctrl+/  ----------------"简单注释","//&

iOS上架ipa上传问题那些事

iOS上架ipa上传问题那些事 原文: http://www.jianshu.com/p/1e22543285c2 字数513 阅读312 评论0 喜欢1 通过xcode直接打包上传,不会提示你的ipa文件有没有错误,只会提示上传成功与否,但在iTunesStore里构建版本的时候并不能看到上传的ipa版本,因为xcode上传并不会检测ipa文件的可用性.解决办法:使用Application Loader(以下简称AppLoader)上传. 注意: 1.iOS9版本的ipa即使用Xcode7生成