ほとんどの脆弱性は、エキゾチックなゼロデイではない。単純なコーディングミスであり、入力の信頼性、スタックトレースの漏れ、秘密のハードコーディングなどだ。締め切りに向かって疾走しているときに、セキュリティが他人事のように思えて、つい口を滑らせてしまうようなものだ。このセクションでは、すべてのプルリクエストを戦場にすることなく、日々のワークフローにセキュアコーディングを組み込む方法を示す。重要な防御の習慣、本当の問題を素早くキャッチするツール、そして、単にスタイルを小出しにするだけでなく、重大なバグを未然に防ぐコードレビューの実行方法を学びます。
セキュアなコーディング
入力の検証誰も信用しない
すべてのセキュリティ・ホラー・ストーリーは、信頼できない入力から始まる。ユーザーデータが安全だと思い込まないこと。その場しのぎの正規表現ではなく、組み込みのバリデータを使いましょう。予期しないものはすべて拒否する。おまけ:アプリの信頼性も向上します。
出力エンコーディング:XSSやその他のインジェクションを阻止する
中に入るものだけを心配してはいけない。出力されるものも同様に危険です。送信先のコンテキスト-HTML、JavaScript、SQL、何であれ-に基づいて、常に出力をエンコードまたはエスケープしてください。これにより、XSSやインジェクションのバグを未然に防ぐことができます。
秘密管理:王国の鍵をハードコードするな
これは2025年に言うまでもないことだが、我々はここにいる。APIキー、トークン、パスワードをソースコードに書くのはやめよう。環境変数、保管庫、シークレットマネージャーを使おう。PRやコミットで秘密のアラートを設定する。
システムの根幹を流出させないエラー処理
スタックトレースや内部ログをユーザー向けのエラーにダンプしてはいけません。ユーザーには親切なメッセージを表示しましょう。詳細は安全にログに残しましょう。例外メッセージが機密のパスや内部情報を漏らす前にキャッチし、サニタイズすることにボーナスポイントがあります。
IDEとCIのツール:あなたの最初の防衛線
リンターとセキュリティ・プラグイン勤務先で即座にフィードバック
コミットする前にバグを発見したいですか?IDEにセキュリティ・プラグインを追加しましょう。これらのプラグインは、安全でないコードパターンにフラグを立て、書いたその場で修正を提供します。コンテキストの切り替えは不要です。摩擦もない。より良いコードをリアルタイムで。
秘密の検出:本番前にクレデンシャルをキャッチ
あなたは秘密を犯した。CIがそれを拾った。Gitの履歴にトークンが漏れてしまい、火事になってしまう。プレコミットフックとCIに統合されたシークレットスキャナーがあれば、このような事態を未然に防ぐことができる。Aikido これをすぐに実行し、すべてのプッシュで実行できるほど高速だ。
スタイルだけではないコード・レビュー
広報担当者のためのセキュリティ・チェックリスト
コード・レビューは、単にリンティングや変数名を修正するだけではいけない。軽量なセキュリティ・チェックリストを使って、本当の問題を発見してください:
- 入力は検証されているか?
- 出力はエンコードされているか、エスケープされているか?
- 認証とアクセス制御は実施されているか?
- この差の中に秘密やトークンはあるのか?
- エラー処理は安全でクリーンか?
セキュリティ・チームがすべての行をレビューする必要はない。しかし、この5つの質問によって、ほとんどのバグを出荷前に発見することができる。
セキュアなコーディングとは、完璧なコードを書くことではない。悪いパターンを早期に発見し、邪魔にならないツールを使い、読みやすさだけでなくリスクを念頭に置いてPRをレビューすることだ。
では、ユーザーや攻撃者の手に渡る前に、あなたの作品をテストする方法を見てみよう。