明白でない動作を表明する

コードを書くとき、プログラマーはチェックを行います。 これは正常です:) PHPでエラーを生成するメカニズムは3つあります。



コードの記述とその後のテストで、assert関数の完全に非自明な動作が発見されました。 そして今、小さなコード:





<?php //      $x $test = 'TEST'; //            if ($test) echo "  - \n"; //    "  - " //         assert assert($test); //   ,     PHP // PHP Notice: Use of undefined constant TEST - assumed 'TEST' in php shell code(1) : assert code on line 1
      
      







このすべてについて何がそんなに悪いのですか? そして、文字列がアサートに送信される場合、インタープリターはevalと同じ方法でそれを実行しようとします。これにより、場合によっては攻撃者が任意のコードを実行できる可能性があるため、さまざまな脆弱性の範囲が大きくなります。



 <?php $x = 'TEST'; assert('$x .= $x;'); echo $x; // TESTTEST
      
      







関数のドキュメントをアサートします



All Articles