2

承認のためにアプリを Amazon に送信しましたが、次のような返信がありました。

「このアプリは、暗号化されていない機密情報を送信しているようです。この例では、電子メールとパスワードがクリア テキストで送信されています。すべての機密情報を暗号化するようにアプリを更新してください。」

サーバー側では、sha1() PHP メソッド (かなり標準的) を使用してデータベースのパスワードを暗号化します。Web サービスへの転送中に Java が渡すパスワード/メール文字列を暗号化する必要があると想定しています。私が想定し?この場合、データ (具体的には電子メール) を復号​​化する必要があります。これは、DB にプレーン テキストで保存する必要があるためです。

このAmazonの問い合わせを以前に見た人はいますか? そして、それについての私の説明は正しいですか?もしそうなら、転送中にデータを一時的に暗号化する方法は Java にありますか?

これが私がそれを行う方法のサンプルです:

insertParam = new ArrayList<NameValuePair>();
            insertParam.add(new BasicNameValuePair("Email", Email));
            insertParam.add(new BasicNameValuePair("Password", Password));
            insertParam.add(new BasicNameValuePair("Username", Username));

            try {
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url_select);

                httpPost.setEntity(new UrlEncodedFormEntity(insertParam));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();

                is = httpEntity.getContent();

            }

編集:

HTTPS が有効なようです。

4

1 に答える 1

3

Amazon の要件はやや保守的ですが、暗号化されていない HTTP の代わりに HTTPS を介して Web サービスに接続することで、最もよく満たされる可能性があります。これは、別の StackOverflow ユーザーが最後に行ったこととまったく同じです: Amazon AppStore Submission Failed: "パスワードなどの機密情報は、暗号化されていないクリア テキストでエコーされます"

アプリ内のデータを暗号化し、インターネット経由で送信し、共有キーを使用してサーバー上で復号化することはできますが、これはアプリを逆コンパイルしてキーを取得する攻撃者に対して脆弱です。

または、キーペアを生成し、アプリに公開キーを含めてデータを暗号化し、インターネット経由で送信し、サーバーで秘密キーを使用して受信データを復号化することもできますが、基本的には再-HTTPS を手動で実装する。

結局のところ、Amazon の要件を実装する「正しい」方法は、HTTPS を使用することです。それ以外のものは、安全に実装するのが難しい可能性があります。

于 2013-01-02T18:51:06.963 に答える