[PHP-dev 1351] Re: 変数の追跡
Seiji Masugata
s.masugata @ digicom.dnp.co.jp
2006年 11月 13日 (月) 20:08:16 JST
こんにちわ、桝形です。
> はじめまして、浅野と申します。
>
> POSTやGET、Cookieなどの外部入力に基づく変数を追跡してperlのtaint modeのような
> チェックを行う機構を自前で開発したいと思っています。
素敵な機能を開発されようとしてますね。頑張って下さい。
> まず変数の追跡をするために、変数領域の確保や値の受け渡しなどの処理を行うコードを
> 読みたいのですが、どこからよめばいいでしょうか。
自分がやるなら、以下辺りを手始めに読みます。
というか、先程このメールを読んでソースを見てました。(w
http://cvs.php.net/viewvc.cgi/php-src/main/php_variables.c?view=log&pathrev=PHP_5_2
SAPI_API SAPI_POST_HANDLER_FUNC(php_std_post_handler)
SAPI_API SAPI_TREAT_DATA_FUNC(php_default_treat_data)
http://cvs.php.net/viewvc.cgi/php-src/main/SAPI.h?view=log&pathrev=PHP_5_2
#define SAPI_POST_READER_FUNC(post_reader) void post_reader(TSRMLS_D)
#define SAPI_POST_HANDLER_FUNC(post_handler) void post_handler(char *content_type_dup, void *arg TSRMLS_DC)
#define SAPI_TREAT_DATA_FUNC(treat_data) void treat_data(int arg, char *str, zval* destArray TSRMLS_DC)
http://cvs.php.net/viewvc.cgi/php-src/main/SAPI.c?view=log&pathrev=PHP_5_2
SAPI_API SAPI_POST_READER_FUNC(sapi_read_standard_form_data)
http://cvs.php.net/viewvc.cgi/php-src/main/rfc1867.c?view=log&pathrev=PHP_5_2
SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler)
parse_strやimport_request_variables関数も同じハンドラを使うので、かなり
ヤヤこしい事になってますが、SAPI_TREAT_DATA_FUNCで登録されている関数が
処理の実体だと思います。
各種配列への登録部分は、php_variables.cのphp_register_variable_safe関数
なのかと。。。
mbstringやfilter拡張モジュールはオマケみたいなものですが、動作的には
参考になると思います。
http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/mb_gpc.c?view=log&pathrev=PHP_5_2
SAPI_POST_HANDLER_FUNC(php_mb_post_handler)
http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/mb_gpc.h?view=log&pathrev=PHP_5_2
MBSTRING_API SAPI_TREAT_DATA_FUNC(mbstr_treat_data);
http://cvs.php.net/viewvc.cgi/php-src/ext/filter/?pathrev=PHP_5_2
http://cvs.php.net/viewvc.cgi/php-src/ext/filter/docs/filter.txt?view=markup&pathrev=PHP_5_2
http://cvs.php.net/viewvc.cgi/php-src/README.input_filter?view=markup&pathrev=PHP_5_2
全然、整理できてなくてスミマセン。。。
--
Seiji Masugata <s.masugata @ digicom.dnp.co.jp>
PHP-dev メーリングリストの案内