ソースでパスワードを非表示にする必要があります。逆コンパイルのリスクを軽減するためにパスワードを難読化する方法は何ですか?
例えば
final String password = "secret";
気にしないでください。
いずれにせよ、平均的なユーザーはクラス ファイルを逆コンパイルすることはできず、逆コンパイルする気もありません。また、標的が単一のデータである場合、意欲的で熟練した攻撃者が難読化によって阻止されることはありません。必要なのは、そのような意欲的で熟練した攻撃者の 1 人だけであり、全世界がパスワードを知っています。
セキュリティがパスワードの難読化に依存している場合は、すでに失われています。
まず、変数に名前を付けませんpassword
。
2 つ目は、生の形式ではなく、エンコードすることです。
3 番目に、char[]
代わりにa を使用しString
ます (文字列は文字列プールに存在するため)。
もちろん、最良のオプションは、コードにまったく保持しないことです。
外部メソッドを使用してパスワードを暗号化します。このメソッドは、コード内で復号化し、コードに (暗号化された) パスワードを保存するために使用できます。
データベースまたはファイルを使用してパスワードを保存します。これは、例を含むかなり良い投稿です。ただし、パスワードを暗号化するために、1 つのマスター パスワードをどこかに保存する必要があります。パスワードを見つけて悪用してパスワードを解読するのを防ぐのは難しいです :(.