この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
Android開発者が必要なのがどれなのか破滅的にわかりづらいのでとりあえずソートしてみた。
JPCERT/CCがCERT Oracle Java セキュアコーディングスタンダード 日本語版を公開しております。
その中で、Androidアプリケーション開発へのルールの適用という項目があるのですが、順番が項目順で破滅的に分かりづらいので、Android開発でガリガリ下がりまくったSAN値を回復するためにソートしなおしてrubyでリンクもつけて見ました。
以下が、その表になります。リンク間違ってたらTwitterのsmellmanに適当にMention送ってください。
ルール | 評価 | コメント |
---|---|---|
IDS07-J | A | |
IDS09-J | A | |
EXP00-J | A | |
NUM02-J | A | |
MET00-J | A | |
MET02-J | A | Android SDKにもdeprecatedやobsoleteなAPIが存在する |
MET04-J | A | |
MET05-J | A | |
MET12-J | A | |
ERR02-J | A | |
ERR07-J | A | |
ERR08-J | A | |
VNA00-J | A | |
VNA02-J | A | |
LCK01-J | A | |
LCK02-J | A | |
LCK06-J | A | |
FIO03-J | A | |
FIO05-J | A | |
FIO08-J | A | |
SER01-J | A | |
SER03-J | A | |
SER08-J | A | |
SEC03-J | A | AndroidではDexClassLoaderやPathClassLoaderの使い方に気をつける必要がある |
SEC05-J | A | リフレクションを使うと非公開のAPIにアクセスすることができるので気を付ける必要がある |
ENV02-J | A | コード例にあるuser.nameはAndroidでは使われないので空になっているが、環境変数という仕組みはもちろんAndroidにも存在するので当てはまる |
MSC00-J | A | |
MSC02-J | A | |
MSC03-J | A | |
IDS00-J | B | コード例ではMS SQL Serverを使った接続例を示しているが、AndroidではSQLiteのDatabaseHelperクラスを使ってDBにアクセスする。 |
EXP02-J | B | |
EXP03-J | B | |
EXP04-J | B | |
NUM09-J | B | |
NUM10-J | B | |
NUM11-J | B | |
MET06-J | B | |
LCK03-J | B | |
TSM03-J | B | |
SER05-J | B | |
SER11-J | B | |
IDS01-J | C | |
IDS03-J | C | |
IDS11-J | C | |
MET01-J | C | Androidでassertを使う場合は、adb shell setprop debug.assert 1かdalvikvm -ea |
MET03-J | C | コード例で使われているSystem.getSecurityManager(); はAndroidでは使われていない。コードの互換性のために存在。 |
LCK08-J | C | |
FIO14-J | C | Androidでは、Activity#finish(), Activity#moveTaskToBack(boolean flag), android.os.Process.killProcess(ind pid), System.exit() |
SER04-J | C | |
SEC00-J | C | |
SEC01-J | C | |
SEC02-J | C | |
SEC04-J | C | |
SEC06-J | C | |
SEC07-J | C | |
ENV00-J | C | Androidでのコード署名は、開発者の識別、アプリケーション間の信頼関係を確立するため |
ENV01-J | C | |
ENV03-J | C | |
ENV04-J | C | dalvikvm -Xverify:all とかで設定できる |
ENV05-J | C |
作成は、エクセルにコピペしてCSV作成してnkfかましたあとのファイルをこんなスクリプトでサクッと。出力は安心のはてな記法です。
require 'csv'
open("jpcertlist_utf8.csv") do |file|
file.each_with_index do |aline, idx|
line = CSV.parse_line(aline)
if idx == 0
puts "|*#{line[0].to_s.strip}|*#{line[1].to_s.strip}|*#{line[2].to_s.strip}|"
else
url = "https://www.jpcert.or.jp/java-rules/" + line[0].strip.downcase + ".html"
puts "|[#{url}:title=#{line[0].to_s.strip}]|#{line[1].to_s.strip}|#{line[2].to_s.strip}|"
end
end
end
しかし、SJISですらSAN値下がりますね>エクセル