Androidの安全リスクと予防措置について


作成したappkファイルでは、検出ツールによって、多くのリスクが検出されました。自分の支払いが無駄になったと感じていますか?今日はAndroidの安全対策についてお話します。
まず安全検査について話しましょう。
1,ソースファイルの安全問題について
     1.1改竄と二次包装リスク
     1.2アプリケーション署名未検証リスク
     1.3 Javaコード逆コンパイルリスク検出
     1.4コード未混淆リスク検出
     1.5資源ファイル漏洩リスク検出
2,データ格納の安全問題について
     2.1 WebView明文保存パスワードリスクチェック
     2.2 Internal Strageデータの大域読取り、書き込みリスク検出
     3.3暗号化アルゴリズムが安全に使用されないリスク
     4.4ログデータ漏洩リスク
     4.5 URLハードコードリスク
3、コンポーネントリスク
     3.1 Activityコンポーネント導出リスク
     3.2 Serviceコンポーネント導出リスク
     3.3 Conttent Providerコンポーネント導出リスク
     3.4 Broadcast Receiverコンポーネント導出リスク
     3.5 WebViewリモートコード実行の脆弱性
     3.6 Intent Scheme URL攻撃リスク
4、安全防護能力
      4.1Java層コードのダイナミックデバッグリスク
      4.2C層コードのダイナミックデバッグリスク
      4.3動的注入攻撃リスク
      4.4シミュレータの運行リスク
      4.5隠しサービスリスクの起動
      4.6 Root設備運行リスク
5,内容リスク
      5.1カスタムワード
     5.2敏感テキスト
      5.3敏感画像
このタイプのリスクは文章類または情報類の応用を発表することにあり、「黄に渉る」、「賭博」などの語彙と写真は敏感な内容の識別または濾過が必要です。コストを節約するために、人工的に情報をチェックして完成させることができます。もちろん、このような仕事量は多すぎます。
会社のAPIを検査して、応用の内容を安全にするのがもっと厳密です。
自分がお金がない状況で、私達ができることを見ましょう。
1包装アプリケーションは、基本的には混同されています。もちろん、私たちはもう一つの署名ファイルを作成します。
2,もし私達の応用体積が大きくなったら、また資源ファイルを圧縮できます。私はAndResGardを使います。
3,お金がないので、仕方がないですね。無料の補強サービスをお願いします。
これをやると、みんなが私もそうしていると思いますか?はい、基本的な操作はプログラムで行いますが、まだ何ができますか?
アプリケーションは逆コンパイルされてから二回包装されました。アプリケーションが起動されるたびに、現在のアプリケーションhashとサービス端末が保存しているものが一致しているかどうかを確認して、アプリケーションが正当であるかを確認します。へへへ、問題を解決する方法の一つですか?
上のコード:

/**
 *   apk MD5          
 *
 * @param context
 * @return
 */
public static String getApkHashValue(Context context) {
    String apkPath = context.getPackageCodePath(); //   Apk     
    try {
        MessageDigest dexDigest = MessageDigest.getInstance("MD5");
        byte[] bytes = new byte[1024];
        int byteCount;
        FileInputStream fis = new FileInputStream(new File(apkPath)); //   apk  
        while ((byteCount = fis.read(bytes)) != -1) {
            dexDigest.update(bytes, 0, byteCount);
        }
       /* BigInteger bigInteger = new BigInteger(1, dexDigest.digest()); //   apk      
        String sha = bigInteger.toString(16);*/
        //  MD5        0   
        StringBuffer buf = new StringBuffer();
        byte[] b = dexDigest.digest();
        int i;
        for (int offset = 0; offset < b.length; offset++) {
            i = b[offset];
            if (i < 0) {
                i += 256;
            }
            if (i < 16) {
                buf.append("0");
            }
            buf.append(Integer.toHexString(i));
        }
        fis.close();
        return buf.toString();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
        return "";
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        return "";
    } catch (IOException e) {
        e.printStackTrace();
        return "";
    }
}
ケース2多くの場合、アプリは逆コンパイルされたり、破壊されたりします。シミュレータやrootの権限を得ることによって操作されます。
仕方がないです。シミュレータにさようならと言うしかないです。正式にプログラムを発表した後、コードは運行設備がシミュレータかどうかを検査します。
しかし、rootやシミュレータは、公式または権威のあるコードを検出していません。Androidブランドが多すぎて、つまんないです。本当にこのような互換性の問題に遭遇したら、大丈夫です。また検査ロジックを作ることができます。
このバージョンをサービスでコントロールします。あるいは、あるユーザーがこの部分を歩いていけないということで、論理額を検証します。
状況3、ダイナミックデバッグ、メモリ読み出し…
状況2と考え方が一致しています。コードによってデバッグなどのツールがデバッグされているかどうかを確認し、対応する判断処理を行います。
他の状況はよくあります。簡単に解決方法を見つけられます。ここではうるさくないです。へへへ
最後に、もしお宅の会社がお金持ちだったら、そんなに多く考えなくてもいいです。専門機関に暗号化して、リスクが一番低いです。
絶対的な安全がありません。安全リスクを最小限に抑えることができます。
以上はAndroidの安全リスクと予防措置の詳細についてお話ししました。Androidの安全リスクと予防措置に関する資料は他の関連記事に注目してください。