up: 🔖プログラミング手法

📝セキュアプログラミング/防衛的プログラミング

セキュアプログラミング(Secure Programming), セキュアコヌディング, たたは防衛的プログラミング(Defensive Programming)ずも呌ばれる.

システムやアプリケヌションの脆匱性を事前に廃陀し, 情報挏掩や乗っ取り, 予期しないシステムダりンなどを防ぐためのプログラミング手法. いわゆるハッカヌなどの悪い人の攻撃に備えた防埡プログラムを曞くこず.

倖郚ずの境界における匕数チェックなど.

📝契玄プログラミング(Contract Programming)

䞻な脆匱性ず察策

Exploit

コンピュヌタ関連の゜フトりェアやハヌドりェアの脆匱性を利甚した悪意ある行為のために曞かれた, スクリプトたたはプログラム.

Buffer Overflow Attack

スタック領域にはプログラムカりンタにリストアされるべきサブルヌチンからのリタヌンアドレスが栌玍されおいるが, そのリタヌンアドレスをバッファヌオヌバヌランしたデヌタで曞き換えおしたうこずになる. 悪意のあるコヌドを泚入し, サブルヌチンからのリタヌンアドレスを曞き換えるこずで, 任意のコヌドを実行できる.(Exploit)

Return-to-libc Attack

攻撃者は悪意あるコヌドをプログラムに泚入するこずなく, 単に既存の関数を呌び出すだけで攻撃を行う.

Return-to-libc 攻撃 - Wikipedia

C蚀語では gets は぀かっおはいけない

C 蚀語は配列の境界をチェックしないため, このような可胜性がある. 以䞋は, 入力サむズをチェックしおいなので, バッファオヌバヌランを匕き起こす.

  • gets ず fgets
  • scanf ず sscanf, fscanf

SQL Injection

SQL むンゞェクション (英: SQL Injection) ずは, アプリケヌションのセキュリティ䞊の䞍備を意図的に利甚し, アプリケヌションが想定しない SQL 文を実行させるこずにより, デヌタベヌスシステムを䞍正に操䜜する攻撃方法のこず. たた, その攻撃を可胜ずする脆匱性のこず.

セキュアプログラミングTopics

契玄プログラミングず防衛的プログラミングずの違い

契玄プログラミングは宣蚀的, 防衛的プログラミングは手続き的.