Svsql documentation

概要

Svsqlは我々が提案したSQLインジェクション攻撃に対して安全なWebアプリケーションを開発するためのフレームワークのコンセプトを検証するための実装を行うプロジェクトです. このフレームワークは従来の安全なコーディング手法・攻撃検出・脆弱性検出に基づく方法とは異なる考え方に基づいて設計されており,

  1. このフレームワークを用いてWebアプリケーションの開発を行うことで, 開発者はSQLインジェクション攻撃に対して安全なWebアプリケーションの開発が行えます.
  2. Webアプリケーションの運用者は 開発者がSQLインジェクション攻撃に対して脆弱なプログラムを記述していないことを コードレビューなどを行わなくても保証することができます. そのため単なる安全なコーディング手法とは異なり, Webアプリケーションの運用者はWebアプリケーションのSQLインジェクション攻撃に対する安全性を 開発者任せにすることなく保証することができます.
  3. また安全性の保証を行うにあたり, 攻撃の検出技術や脆弱性の検出技術といった検出漏れ・誤検出の恐れのある技術を利用しません. そのためフレームワークの実装に不備がない限り, 誤検出による正規リクエストの拒否や検出漏れによる脆弱性の発生は起こりません.

という特徴を持っています. 我々の提案の詳細については こちらの論文 を参照してください.

実装

我々が提案したフレームワークはデータベースおよびデータベース接続ライブラリに対して拡張を行うことで実装されます. 今回我々は実装を作成するにあたり,データベースに PostgreSQL を選択しデータベース拡張の実装を行いました. また,データベースに接続するクライアント側の環境には.NET Frameworkを選択し,データベース接続ライブラリの実装を作成しました.

このデータベースの拡張とデータベース接続ライブラリの拡張を用いることで, Webアプリケーションの開発環境に.NET Frameworkを利用しデータベースにPostgreSQLを利用しているという環境下で, 我々が提案したSQLインジェクション攻撃に対して安全なWebアプリケーションを開発するためのフレームワークを実際に構築し, その効果を検証することができます.

詳細

Svpgsql

Svpgsqlは我々が提案したフレームワークの構築に必要な機能を PostgreSQL 8.3.5 に追加したデータベースです. 追加されている主な機能は

  • ユーザ入力値からのSQLクエリの構築を安全にデータベース側で行い,構築されたSQLを実行する機能
  • SQLの構築を行う際に利用するSQLクエリの雛型がSQLインジェクション攻撃によって改ざんされていないことを保証するための機能
  • データベースを通常通り利用するための実行モードと, WebアプリケーションがSQLインジェクション攻撃に対して安全であることを保証するための実行モードとを切り替えるためのユーザ権限の拡張

になります. これらの機能が追加されている点以外はPostgreSQLと変わらないため,Svpgsqlは通常のPostgreSQLと同じように利用できます.

Nsvpgsql

NSvpgsqlはPostgreSQLの拡張データベースSvpgsqlにアクセスするための,.NET Framework用のデータベース接続ライブラリです. PostgreSQLのデータベース接続ライブラリ Npgsql 2.0.2 を拡張して作成されています. Npgsqlに対して追加された主な機能は

  • PostgreSQLの拡張Svpgsqlが提供するデータベース上でユーザ入力値からSQLを安全に構築し,SQLを実行するための機能を ADO.NETのインターフェイスを通じて利用するための機能拡張.
  • 本フレームワーク上を利用してSQLインジェクション攻撃に対して安全なWebアプリケーションを構成する際に必要となる, Webアプリケーション実行前にアプリケーション内で利用されるSQL(の雛型)に対するMAC値を取得する処理を行うためのツールの提供

です.その他の点についてはNpgsqlと同様に動作します.

Table Of Contents

Next topic

チュートリアル

This Page