このブログについて

ソフトウェア開発におけるエラーの予防やプロジェクト管理、品質管理を支援するParasoft製品のTIPSなどを、国内総販売代理店テクマトリックスのサポートスタッフが紹介しています。

2016年2月17日水曜日

早めのセキュリティ対策


そのアプリケーション安全ですか?

どんなに優れたアプリケーションでも、知らず知らずのうちにセキュリティ問題を作りこんでしまうことがあります。自信をもって「大丈夫!」と言えますか?

データベースを使用したアプリケーションの場合、ユーザーが入力した値をSQL文に使用します。悪意のあるユーザーが入力データを細工した場合、意図しないSQL文が実行される可能性があります。ユーザーが入力した値を何もチェックせずそのまま使っていると
  • 個人情報の漏えい
  • 情報の改ざん
  • データベースの破壊
などの問題を許してしまうかもしれません。

セキュリティテストのタイミング

完成したアプリケーションを使用してセキュリティテストを実施することが多いのですが、このタイミングだと。。。
  • 原因がどこにあるのかを特定するのに時間がかかる
  • 時間がなくて、リリース前にすべて問題を解決できない
というようなことがあります。
それなら、不具合対策のためのコーディングチェックと同じように、セキュリティの問題も早めに対策をとったほうが、よりセキュリティを高めることができると思いませんか?

効果的なセキュリティ対策

日経SYSTEMS2016年1月号Jtest を利用したお客様のセキュリティ対策が紹介されています。この記事で紹介された 『脆弱性を作りこまない』 ための Jtestのコーディングルールについてご紹介します。
例えば、SQL文に入力データを埋め込んで文字列を組み立てるの対策には、「プリペアドステートメント」の利用が効果的です。次のイメージは、prepareStatement()を使用せず、createStatement()を使用しているコードに対して違反をレポートしています。


Jtest には、コーディングチェックやバグの可能性をチェックするルール以外にも、 SQLインジェクションコマンドインジェクションクロスサイトスクリプティング(XSS) などの脆弱性につながるコードがないかを発見したり、パスワードの取り扱いに問題がないか、例外メッセージのコンソール出力など機密データの取り扱いに問題がないをチェックすることができます。また、 OWASP(Open Web Application Security Project)や PCIデータセキュリティスタンダード(PCI DSS)に準拠したルールセットも搭載されています。
参考: Jtestのセキュリティ脆弱性検出の特長

Visual Studio を使用して、C#や VB.net でアプリケーションを開発している場合は、dotTEST をご利用ください。Jtestと同じようにコードに潜んだセキュリティ問題を見つけることができます。

セキュアコーディング

脆弱性を含んだ危険なコーディングをしないためには、セキュアコーディングを意識することが必要です。Jtestにも搭載されている CERT/CCが提供している『Java セキュアコーディングスタンダード』のルールセットを活用し、言語仕様や実行環境に潜む落とし穴を理解し、攻撃に強く、安全で信頼性の高いアプリケーションの開発に役立ててください。
Jtest および dotTEST をお試しいただける体験版をご用意しています。


セキュリティ対策の一環として Jtest / dotTEST をご活用ください!