基本情報暗記無料で始める

セキュアプログラミングとは?せきゅあぷろぐらみんぐ

セキュアプログラミングとは、プログラムを書く段階で脆弱性を作り込まないための実装の作法。外部から受け取った値は「許可する形式」を決めて検査し、画面やSQL、OSコマンドへ渡す直前には、その出力先で特別な意味を持つ文字を無害な表記に置き換える処理(エスケープ)を行う。SQLはプレースホルダ(SQL文の中に置く、値を後から安全に埋め込む場所。この仕組みをプリペアドステートメントと呼ぶ)で組み立て、エラー画面に内部情報を出さず、プログラムは必要最小限の権限で動かす、といった原則から成る。科目Bの情報セキュリティ問題でも題材になる。

最終更新:2026-10-09

試験情報

基本情報技術者試験の頻出用語/テクノロジ系

別名:セキュアプログラミング(入力値検証)

基本情報を最短で暗記・合格する →

背景

Webサイトへの攻撃の多くは、入力欄に細工した文字列を入れるだけで成立するSQLインジェクションやクロスサイトスクリプティング(XSS)で、原因は「外から来た文字列をそのまま信用して使う」という書き方にある。あとからファイアウォールで塞ぐより、書く時点で作り込まないほうが安く確実であるため、IPAの「安全なウェブサイトの作り方」などで作法として整理された。基本情報では対策とその対象となる攻撃の対応付けで問われる。

具体例

検索キーワードをSQL文へ文字列連結で埋め込むと、「' OR '1'='1」のような入力で条件を書き換えられる。プレースホルダを使い、SQLの構文と値を分けて渡すことで防ぐ。画面に表示するときはHTMLエスケープ、URLに含めるならURLエンコード(URLに使えない文字を%付きの表記に置き換えること)と、同じ文字列でも出力先ごとに処理を変える。Ruby on Railsのようなフレームワークは、テンプレートに埋めた値を標準でHTMLエスケープする。

試験での引っ掛け

「入力時に危険な文字を取り除けば十分」と読める選択肢は誤り。同じ値でもHTMLとSQLとOSコマンドでは危険な文字が違うため、対策の要は使う「出力の直前」にある。またブラウザ側のJavaScriptによる入力チェックは入力ミスを減らす利便性のためのもので、通信を直接改変されれば無効になるため、サーバ側の検証を省く理由にはならない。

関連用語

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

基本情報を最短で暗記・合格する →

試験での特徴
  • 分野:テクノロジ系
  • 「入力時に危険な文字を取り除けば十分」と読める選択肢は誤り。