PHP intval 関数セーフ アプリケーションのヒント_PHP チュートリアル

WBOY
リリース: 2016-07-15 13:33:34
オリジナル
877 人が閲覧しました

私たちは学びます

1. PHP intval 関数の説明

intval 関数には次の特性があります: 「数値または正または負の符号に遭遇するまで変換を開始せず、その後、非数値または文字列の末尾 () 変換終了」を使用する場合、一部のアプリケーションでは intval 関数の特性の理解が不十分なため、誤った使用により一部のセキュリティ判断が回避され、セキュリティ上の脆弱性が発生します。

2. PHP intval 関数分析

  1. PHP_FUNCTION (intval)
  2. {
  3. zval **num, **arg_base;
  4. スイッチ (ZEND_NUM_ARGS()) {
  5. ケース 1:
  6. if (zend_get_parameters_ex(1, &num) == FAILURE) {
  7. WRONG_PARAM_COUNT
  8. }
  9. ベース
  10. = 10 ; intval 関数は文字列パラメータを受け取ると、処理のために Convert_to_long_base() を呼び出し、次に Z_LVAL_P(op) = strtol(strval, NULL, base); strtol 関数を通じてパラメータを処理します。
  11. PHP intval 関数のプロトタイプは次のとおりです: long int strtol(const char *nptr,char **endptr,int Base);
この関数は、パラメータの基数に従ってパラメータ nptr 文字列を長整数に変換します。パラメータbase 範囲は2から36、または0です。パラメータbaseは、ベース値が10の場合は10進数が使用され、ベース値が16の場合は16進数が使用されます。

そのプロセスは次のとおりです:

strtol() はパラメータ nptr 文字列をスキャンし、数値または正負の記号が見つかるまで変換を開始しません。数値以外の場合は () で終了します。または文字列の末尾を変換して結果を返します。

その後、ifなどの判定にintvalを使用すると判定が無意味になり、セキュリティ上の脆弱性が発生します

3. PHPのintval関数のテストコード

<ol class="dp-xml">
<li class="alt"><span><span>//intval.php  </span></span></li>
<li>
<span>$</span><span class="attribute">var</span><span>=</span><span class="attribute-value">"20070601"</span><span>;  </span>
</li>
<li class="alt"><span>if (intval($var))  </span></li>
<li><span>echo "it's safe";  </span></li>
<li class="alt">
<span>echo '$</span><span class="attribute">var</span><span>='.$var;  </span>
</li>
<li><span>echo "  </span></li>
<li class="alt"><span>";  </span></li>
<li>
<span>$</span><span class="attribute">var1</span><span>=</span><span class="attribute-value">"1 union select 1,1,1 from admin"</span><span>;  </span>
</li>
<li class="alt"><span>if (intval($var1))  </span></li>
<li><span>echo "it's safe too";  </span></li>
<li class="alt">
<span>echo '$</span><span class="attribute">var1</span><span>='.$var1;  </span>
</li>
<li>
<span class="tag">?></span><span> </span>
</li>
</ol>
ログイン後にコピー

4. PHP intval関数の実践応用

WordPress <= 2.0.6 wp-trackback.php Zend_Hash_Del_Key_Or_Index / SQLインジェクションexploit

http://www.bkjia.com/PHPjc/446049.html

www.bkjia.com

tru​​e
http://www.bkjia.com/PHPjc/446049.html

技術記事学ぼう 1. PHP intval 関数の説明 intval 関数は、数値または正負の符号に遭遇するまで変換を開始せず、数値以外の文字列または文字列の末尾に遭遇すると変換を終了するという特徴があります。 ) いくつかでは...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!