アジャイル開発に関して、リリースごとにセキュリティをテストするためのベスト プラクティスは何ですか?
月刊の場合、毎月ペンテストをしているショップはありますか?
アプリケーション ドメインは何ですか? 場合によります。
「アジャイル」という言葉を使っていたので、ウェブアプリだと思います。私はあなたのために素敵な簡単な答えを持っています.
Burp Suite のコピーを購入してください (「burp」の Google 検索結果で 1 位になりました --- これは確かな支持です!); 11 月まで待つと、99EU、または ~180 米ドル、または 98 オバマ ドルの費用がかかります。
Burp は Web プロキシとして機能します。Firefox や IE などを使用して Web アプリを閲覧すると、生成したすべてのヒットが収集されます。これらのヒットは、Web ファザーである「侵入者」と呼ばれる機能に送られます。Intruder は、クエリ ハンドラのそれぞれに提供されたすべてのパラメータを把握します。次に、SQL、ファイルシステム、HTML メタ文字など、各パラメータに対しておかしな値を試します。典型的な複雑なフォームの投稿では、これにより約 1500 件のヒットが生成されます。これを調べて、危険な --- または、アジャイル コンテキストではさらに重要なことに、新しい --- エラー応答を特定します。
リリースの反復ごとに Web アプリのすべてのクエリ ハンドラーをファジングすることは、正式な "SDLC" を制定して人員を追加することなく、アプリケーションのセキュリティを向上させるためにできる最も重要なことです。さらに、主要な Web アプリ セキュリティのホット スポットについてコードを確認します。
パラメーター化された準備済み SQL ステートメントのみを使用してください。単純に文字列を連結してデータベース ハンドルにフィードしないでください。
すべての入力を既知の適切な文字 (alnum、基本的な句読点) のホワイト リストにフィルター処理し、さらに重要なこととして、クエリ結果からフィルター データを出力して、HTML メタ文字を HTML エンティティ (quot、lt、gt など) に「中和」します。
現在クエリ パラメータで単純な整数の行 ID を使用している場所では、推測しにくい長いランダムな識別子を使用し、ユーザー X がそれらの識別子を推測するだけでユーザー Y のデータを表示できないようにします。
アプリケーション内のすべてのクエリ ハンドラをテストして、有効なログオン セッション Cookie が提示された場合にのみ機能することを確認します。
Web スタックで XSRF 保護を有効にします。これにより、レンダリングされたすべてのフォームで非表示のフォーム トークン パラメーターが生成され、疑いを持たないユーザーのためにフォームを送信する悪意のあるリンクが攻撃者によって作成されるのを防ぐことができます。
ハッシュ化されたパスワードを保存するには、bcrypt --- だけを使用します。
私はアジャイル開発の専門家ではありませんが、基本的な自動ペンテストソフトウェアをビルドサイクルに統合することは良いスタートになると思います。基本的なテストを行い、自動化に適したソフトウェアパッケージをいくつか見てきました。
私はセキュリティの専門家ではありませんが、セキュリティをテストする前に知っておくべき最も重要な事実は、保護しようとしていることだと思います。何を保護しようとしているのかがわかっている場合にのみ、セキュリティ対策を適切に分析して、実装された対策のテストを開始できます。
非常に抽象的な、私は知っています。しかし、それはすべてのセキュリティ監査の最初のステップであるべきだと思います。
単体テスト
できるだけ早く単体テストを行ってください (たとえば、送信前にパスワードを暗号化する必要がある、SSL トンネルが機能しているかなど)。これにより、プログラマーが誤ってプログラムを安全でなくするのを防ぐことができます。
防御プログラミング
私は個人的にこれをパラノイド プログラミングと呼んでいますが、ウィキペディアは決して間違っていません (皮肉)。基本的に、すべての入力をチェックするテストを関数に追加します。
ロギング
狂ったようにすべてを記録します。ログを追加するよりも削除する方が簡単です。ユーザーがログインしましたか? ログに記録します。ユーザーが 404 を見つけましたか? ログに記録します。管理者が投稿を編集/削除しましたか? ログに記録します。誰かが制限されたページにアクセスできましたか? ログに記録します。
開発段階でログ ファイルが 15 MB 以上に達しても驚かないでください。ベータ版では、削除するログを決定できます。必要に応じて、特定のイベントがいつ記録されるかを決定するフラグを追加できます。