Snykで手軽にセキュアコーディング
セキュアコーディングのイメージというと
・なんかいろいろやることが多そう…
・大変そう…
みたいなイメージがあります。
特に自社サービスをやっているとセキュリティのことで、お客様からセキュリティチェックシートみたいな秘伝のたれなスプレッドシートを渡されますが、自社のサービスってどこまでやっているのか?というのはいつも悩みながら記載しています。
セキュアコーディングやってます!
って言えるようになりたいけど、いったいどんな観点を満たせばいいのか?
セキュアコーディングの10のプラクティスがあります。
Top 10 Secure Coding Practices
1.バリデーションを行う
2.コンパイラの警告を確認
3.セキュリティーポリシーを実装する
4.設計はシンプルを心がける
5.デフォルトを拒否する
6.最小特権の原則を守る
7.他のシステムに送信するデータはサニタイズ
8.多層防御を実践
9.品質保証技術を使用する
10.セキュアコーディング標準を採用する
うん、なるほど、これは確かに。
コーディングだけではなく、外部のコーディングルールや静的解析をCI/CDでチェックしたりとか、脆弱性診断を行ったりとか複合的に確認すればいいのかとは思います。
まず、コーディングレベルで意識することはコーディング規約であったり、ライブラリ自体の脆弱性がありますが、いちいち確認するのは大変なので、脆弱性について診断してくれるサービスがあります。
snykというサービスです。
リポジトリと連携することでリポジトリを静的解析してくれて、脆弱性も診断してくれます。連携も簡単でした。
ためしに自分のgithubのリポジトリと連携してみました。
リポジトリ一覧画面
リポジトリごとに、セキュリティレベルごとに脆弱性の個数が表示されています。
こまかく、コードがハイライトされて、わかりやすく説明が記載されています。(英語ですが)
どこが悪いのかすぐわかりますね。
あと、Snykは、IDEのプラグインも提供されていて、
VScode、Eclipse、GoLand、InteliJ、PhpStormなどなどあるので、IDEのプラグインとして、コーディング時にセキュアコーディングを意識してコーディングすることも可能かと思います。
トライアルとしての、フリー版もあるので個人開発で試して見るのも一つの手かと思いますので気軽に試してみてください。