validate-phpのPHPスクリプト版

(更新日: 2018/05/29)

入力バリデーションCモジュール、Validate PHPモジュールのスクリプト版を紹介します。既存のバリデーション用ライブラリとは一味違います。

デザイン

Validate PHPは入力バリデーション用のフレームワークとして設計されています。

Validate PHPはコードでバリデーションルールを定義するのではなく、PHP配列としてルール(Spec)を定義します。コードでルールを定義すると、余計なPHPコードを実行する必要があります。PHP配列で定義するとより効率良くバリデーションできます。

特定のエントリポイント(つまりMVCのコントローラー)のGET / POST / COOKIE / FILES / HTTP Headerをまとめて、一気に、効率良くバリデーションできます。

多くのバリデーションライブラリは全ての入力に対するホワイトリスト型バリデーションの実施が困難です。Validate PHPではこれを容易に行えます。

使用方法

個別に「入力値の形式」を定義さえすれば、「データ型を指定する感覚」で理想的な入力バリデーションを実装できます。

https://github.com/yohgaki/validate-php-scr/blob/master/src/examples/00-validate.php

RDBMSでいうならCHECK制約やデータ変更前のストアードプロシージャーによる制約を全ての入力値に対して強制できます。

C言語モジュール版

スクリプト版のAPIが安定したら、Cモジュール版が同じように動作するように更新します。(その為に、C言語で実装しやすいような感じのPHPスクリプトを書いています)

https://github.com/yohgaki/validate-php-scr

ドキュメント

ドキュメントはまだ無いので、サンプルスクリプトとテストコードを読んでください。

Web環境で動作するサンプルスクリプトは以下で見れます。

https://sample.ohgaki.net/validate-php/validate-php-scr/src/examples/00-validate-web.php

テスト用に書いているので読みづらいですが、サンプルスクリプトとしても利用可能です。

https://github.com/yohgaki/validate-php-scr/tree/master/src/tests

自動的にバリデーションルール(spec)を作成するツール

アプリケーションの入力を記録し、自動でバリデーションルールを生成することも可能です。

https://github.com/yohgaki/validate-php-scr/tree/master/src/tools

OWASP TOP 2017のA10では全ての入力をバリデーションし、不正な入力を検出し対応できないアプリケーションは脆弱なアプリケーションとしています。Webアプリセキュリティの基礎的要求事項ですが、多くのアプリケーションが実装していません。Validate PHPなら簡単に検出する所までは行えます。

アプリケーション入力から変数の特徴を完全かつ正確に把握することは不可能です。ヒント定義でより正確な定義を自動生成できるようにする予定です。

状態とバグ

Validate PHPはまだ開発中です。予告なくAPIの変更、データ形式(spec)の変更などが行われます。

まだバグがあると思うので見つけたら教えてください。こうしたら良い、こうして欲しい、といったご意見も歓迎です。

Comments

comments

Pocket