Skip to content
これは pieceofcake2/security-sast のドキュメントです。pieceofcake2/cakephp 用の CakePHP 2.x プラグインです。 このフォークについて

指摘を修正する ​

既存のアプリケーションの最初のスキャンから、CI で問題のない状態を保つまでの、報告書の進め方です。

1. 報告書を上から読む ​

指摘はリスクごとにまとまっています。高 (SQL、リクエストで選ぶビュー、リクエストの unserialize()、本番の デバッグレベルや salt) から始め、次に 中 に進みます。各ルールのページには、見つけたものと、箇所とそのコードが あります。コードで開き、修正方法は ルールのページ をご覧ください。

ルールが見るのはコードの書き方で、値がどこから来たかではありません。各箇所で、まず値がユーザーから来うるかを 判断してください (リクエスト、Cookie、ヘッダー、アップロードされたファイル、ユーザーが以前に保存したデータ)。来うるなら 脆弱性なので修正します。来ないなら、簡単なら修正し (あとでコードが変わったときにも安全です)、そうでなければ理由を書いて 除外します。

2. ルールごとにまとめて修正する ​

ほとんどのルールには、すべての箇所に共通の修正方法があります。query() のプレースホルダー、find() の条件の配列、 ビューの h()、許可した値の一覧です。ルールのすべての箇所を 1 つの変更で修正し、スキャンの範囲外のコード (シェル、 プラグイン、アプリケーションのライブラリ) にも同じ書き方がないか探してください。

設定の指摘は、コードではなく本番の設定で修正します。設定 と、秘密の値を変えると何が使えなくなるかの 注意をご覧ください。

3. 修正できたことを確かめる ​

  • もう一度チェックし、その箇所が指摘されないことを確かめます。
  • 壊れたはずの値でアクションのテストを足します。検索のクォート (O'Brien)、テキストとして表示されるべき名前の <b>、 リダイレクトのほかのサイトの URL などです。
  • End-to-End テストで pieceofcake2/security-dast のフルスキャンを 実行します。攻撃者と同じようにページとフォームを攻撃します。

4. 安全なものは理由を書いて除外する ​

定数のクエリなど安全な箇所は、その場所で、理由を書いたコメントで除外します (指摘を除外する)。報告書を通すために、アプリケーション全体でルールを除外しないでください。 そのルールの次の箇所が指摘されなくなります。

ビューでわざとサニタイズした HTML を入れる変数は、safeViewVariables で一度だけ安全にします (cakephp2-view-unescaped-output)。

5. CI で保つ ​

push と pull request のたびにチェックします (GitHub Actions での CI)。

  1. まず --fail-on=none にします。ジョブを失敗させずに、報告書で指摘を見られます。
  2. 高の指摘を修正してから --fail-on=high にします。新しい高の指摘は、それを足した pull request を失敗させます。
  3. 中の指摘を修正してから --fail-on=medium にします。

実行ごとの報告書 (ジョブの成果物) は残してください。アプリケーションのチェックの記録になります。

著作権とライセンスについては LICENSE を参照してください。Cake Software Foundation とは関係ありません。