ホームページ >バックエンド開発 >PHPチュートリアル >PHP 組み込み関数 intval()_PHP チュートリアル
1. 説明
intval 関数には、「数値または正または負の符号が出現するまで変換は開始されず、非数値または文字列の末尾 (/0) が出現すると変換が終了する」という特性があります。 )." 一部のアプリケーションでは、 intval 関数の特性の理解が不十分であり、誤った使用により一部のセキュリティ判断が回避され、セキュリティの脆弱性が生じる可能性があります。
2. 分析
PHP_FUNCTION (intval) { zval **num, **arg_base ; int Base; switch (ZEND_NUM_ARGS()) { case 1: if (zend_get_parameters_ex(1, &num) == FAILURE) { WRONG_PARAM_COUNT; } base = 10; Break; ケース 2: if (zend_get_parameters_ex(2, &num, &arg_base) == FAILURE) { WRON G_PARAM_COUNT; } convert_to_long_ex (arg_base); base = Z_LVAL_PP(arg_base); break ; default: WRONG_PARAM_COUNT; } RETVAL_ZVAL(*num, 1, 0); convert_ to_long_base(return_value, ベース); } Zend/zen d_operators.c->>convert_to_long_base(
intval 関数は文字列パラメーターを受け取ると、convert_to_long_base() を呼び出して処理し、その後 Z_LVAL_P(op) = strtol( strval、NULL、base); strtol 関数を通じてパラメータを処理します。 関数のプロトタイプは次のとおりです:
long int strtol(const char *nptr,char **endptr,int Base); |
if (intval($var1)) echo "それも安全です"; echo '$var1='.$var1; IV. 実践的な応用
WordPress <= 2.0.6 wp-trackback.php Zend_Hash_Del_Key_Or_Index / SQL インジェクションエクスプロイト
|
技術記事 |