[PHP-dev 1352] Re: 変数の追跡

ASANO Satoshi satosh-a @ is.naist.jp
2006年 11月 13日 (月) 20:42:31 JST


浅野です。
返信ありがとうございます。

とりあえず教えていただいた部分を消化します。

Seiji Masugata wrote:
> こんにちわ、桝形です。
> 
> 
>>はじめまして、浅野と申します。
>>
>>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
> 
> 全然、整理できてなくてスミマセン。。。
> 



PHP-dev メーリングリストの案内