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

コードを書くとき、プログラマーはチェックを行います。 これは正常です:) 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 


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

Source: https://habr.com/ru/post/J138443/


All Articles