セキュアプログラミング
更新日:
用語解説
入力、認証、認可、出力、エラー、メモリ、秘密情報などを安全に扱い、攻撃に悪用される欠陥を設計・実装段階から作り込まないための原則と実践です。
■ 試験で押さえるポイント
全ての外部入力を信頼せず、型・長さ・範囲・形式を検証し、利用先の文脈に合う出力エンコーディングを行います。
SQLはプレースホルダ、OS命令は安全なAPIを使い、文字列連結によるコードとデータの混在を避けます。
サーバ側で認証・認可を要求ごとに確認し、最小権限、秘密情報の安全な保管、詳細エラーの非公開を徹底します。
コードレビュー、静的・動的解析、依存関係検査、ファジング、脅威分析を開発工程へ組み込み、修正後も再検証します。
■ 過去問での着眼点
入力検証だけでなく、文脈別エスケープ、パラメータ化、認可、エラー処理、依存関係まで含むことを押さえます。
例: 商品IDを数値として検証し、SQLへ束縛し、検索結果はHTML用にエンコードし、利用者の閲覧権限を別途確認します。