40018


mBaaSを使ったiOSアプリを作る際、AppDelegate.swiftに下記のようなコードを書くと思います。(※例はNiftyCloudMobileBackend)

[code]

    NCMB.setApplicationKey("XXXXXXX", clientKey: "YYYYYYYY")
    
[/code]

このキーが漏れてしまうと、情報の更新が外部から可能になってしまうと思います。  
例えば、git管理の話ならばKeyを別のファイルに区切ってgitignoreしてしまえばよいと思いますが、アプリのリリース時にこの部分はどうすべきでしょうか？

monacaやJSの場合、herokuにClientKeyを置いて回避する方法(<http://blog.mb.cloud.nifty.com/?p=7410>)
等が見つかりましたが、iOSのクライアントのみでできる対策はどのようなものがありますでしょうか？

知見のある方はご教示の程、宜しくお願い致します。


CC BY-SA 3.0
2017-10-06T07:20:06.133
38484
2017-12-04T09:42:37.603
3983
question
swift ios objective-c security
iOSアプリにおけるmBaaS使用時のApplicationKey、ClientKey(Secret)のセキュリティについて


クライアント側のみでできる対策としては難読化があります。

例えば、以下のライブラリを使って文字列を難読化することができます。

<https://github.com/UrbanApps/UAObfuscatedString>

[code]

    // Password という文字列をUAObfuscatedStringをつかって表現する
    let password = "P".a.s.s.w.o.r.d
    
[/code]

このようにすることによって、バイナリ上に連続した文字列としてパスワードが現れることを防ぎ、stringsコマンドなどの簡易的な方法ではパスワードを抜き出すことができなくなります。

（※ これはあくまで簡易的な対策です。stringsより本格的な解析をされるとパスワードが抜き出されてしまう可能性があります）


CC BY-SA 3.0
2017-12-04T07:01:16.227
40018
2017-12-04T09:42:37.603
2017-12-04T09:42:37.603
23829
23829
38484
answer