2017-09-10 18 views
0

私はphp.netからPHPでOOPを学んでいますが、that pageの3番目のノートには、という奇妙なものが見つかりました。 call_user_func()には、../のような危険な文字が含まれています。phpのclassとcall_user_func()関数の関係は何ですか?

私の経験によると、call_user_func()は、最初のパラメータで指定されたコールバックを呼び出すために使用されます。しかし、どのような概念やクラス名の関係はcall_user_func()関数では、私は混乱している。

誰でも私にシナリオを教えてもらえますか?

+0

クラス名には「危険な文字」が含まれていないため、ユーザー入力から派生したファイル名では危険ですが、ファイル名には存在できません。あなたがこれを読んだ参照先を表示することができます –

+0

私はすでに質問の説明に参照リンクを追加しました。 –

+0

参照リンク - > http://php.net/manual/en/language.oop5.autoload.php –

答えて

0

警告はかなり古いものでなければなりません。クラス名に大部分(すべて?)の危険な文字があると、__autoloadは呼び出されません。少なくとも、PHP 5.4.x/early 5.5.xより遅くなりました。しかし以前はそれが問題でした。次のオートローダーを検討してください:

明らかに、それはデモのためだけです。あなたがPHP 5.3.x.のためにRCEを持つ

$user_input = 'dummy {}echo"hi";//'; 

:実際のようなものを邪悪なユーザーから来ている、またはある

call_user_func(array($user_input,'function')); 

そして、もし$user_input:平等に愚かな呼び出しとそれを組み合わせますしかし、私は多くの間違いがあったことを認めます。

3v4al Linkいくつかのバリエーションを試したい場合はeol versionsをチェックしてください。

関連する問題