質問: Androidアプリを開発しており、起動時にAjax通信を用いて サーバーに置いてあるAPIを叩き、APIが出力したJSONを取得して 情報を処理しようとしています。 この時、サーバーに置いてあるAPIには外部からアクセスできないように Basic認証をかけていますが、この認証に必要なIDとパスワードをどのように アプリに持たせたらいいのでしょうか? Androidは簡単にデコードしてソースが見れるとのことなので IDとパスワードの直書きは論外としてもこの状態で どうやって安全に通信するのかがわかりません・・・ なお、このアプリはログイン等を一切せずに、 通信も完全に見えない裏側で行う必要があります。 ですので「ユーザーには何もさせずに」というのが大前提になります。 --- 追記 --- 開発環境はMonacaを使用しており、HTML/Javascriptを使用したアプリです。 APIはPHPで作成し、WordPressの情報を取得・加工し返します。 目指す「安全性」は現時点ですと、とりあえず可能な限り高めておきたいという程度です。 というのも、今回サーバーに置いてあるAPIとは、入力を一切利用せず 特定のSELECTを行った結果を加工しJSONで返すだけの簡単な物です。 更に、その内容も個人情報や機密情報の類は一切扱っておりません。 個人的には、今はこれだけならあまり問題ないように思いますが APIという口ができてしまう以上、今後の為にも極力安全な作りにしておきたい。 と思った次第です。
回答: Monacaの暗号化については 技術情報: Monacaアプリのコードを暗号化。Cordova crypt file pluginを試すが参考になるかもしれません。 (なお、Basic認証やOAuthでWordPressのデータを取るのにもWP-APIを適切に利用すればSQLインジェクション等を可能にする可能性を減らせるかも知れません。) いずれによる認証にせよ、TLS通信は必須ですね。それでもProxyかけて無理やり傍受することは可能かもしれないですし、暗号が複合できないかと言えば実行するためにどうこうしてるなら............となりますが............