どんなに優れたアプリケーションでも、知らず知らずのうちにセキュリティ問題を作りこんでしまうことがあります。自信をもって「大丈夫!」と言えますか?
データベースを使用したアプリケーションの場合、ユーザーが入力した値をSQL文に使用します。悪意のあるユーザーが入力データを細工した場合、意図しないSQL文が実行される可能性があります。ユーザーが入力した値を何もチェックせずそのまま使っていると
- 個人情報の漏えい
- 情報の改ざん
- データベースの破壊
完成したアプリケーションを使用してセキュリティテストを実施することが多いのですが、このタイミングだと。。。
- 原因がどこにあるのかを特定するのに時間がかかる
- 時間がなくて、リリース前にすべて問題を解決できない
それなら、不具合対策のためのコーディングチェックと同じように、セキュリティの問題も早めに対策をとったほうが、よりセキュリティを高めることができると思いませんか?
日経SYSTEMS2016年1月号に
Jtest
を利用したお客様のセキュリティ対策が紹介されています。この記事で紹介された
『脆弱性を作りこまない』
ための Jtestのコーディングルールについてご紹介します。
例えば、SQL文に入力データを埋め込んで文字列を組み立てるの対策には、「プリペアドステートメント」の利用が効果的です。次のイメージは、prepareStatement()を使用せず、createStatement()を使用しているコードに対して違反をレポートしています。
Jtest には、コーディングチェックやバグの可能性をチェックするルール以外にも、
SQLインジェクション、
コマンドインジェクション、
クロスサイトスクリプティング(XSS)
などの脆弱性につながるコードがないかを発見したり、パスワードの取り扱いに問題がないか、例外メッセージのコンソール出力など機密データの取り扱いに問題がないをチェックすることができます。また、
OWASP(Open Web Application Security Project)や PCIデータセキュリティスタンダード(PCI DSS)に準拠したルールセットも搭載されています。
参考: Jtestのセキュリティ脆弱性検出の特長
参考: Jtestのセキュリティ脆弱性検出の特長
Visual Studio を使用して、C#や VB.net でアプリケーションを開発している場合は、dotTEST をご利用ください。Jtestと同じようにコードに潜んだセキュリティ問題を見つけることができます。
脆弱性を含んだ危険なコーディングをしないためには、セキュアコーディングを意識することが必要です。Jtestにも搭載されている CERT/CCが提供している『Java セキュアコーディングスタンダード』のルールセットを活用し、言語仕様や実行環境に潜む落とし穴を理解し、攻撃に強く、安全で信頼性の高いアプリケーションの開発に役立ててください。
Jtest および dotTEST をお試しいただける体験版をご用意しています。
セキュリティ対策の一環として Jtest / dotTEST をご活用ください!