チェーンを使用してThinkPHP5.1デシリアライズ

直接アウトコピーでの注意事項
 
コードフレーム1作曲への直接アクセス
 
➜作曲作成プロジェクト--prefer-distのtopthink /考えるtp5137
➜CDのtp5137
➜vimのcomposer.json#の把 "topthink /フレームワーク": "5.1。*" 改成 "topthink /フレームワーク": "5.1.37"
➜作曲更新
 
2ドットを使用して非直列化されました
  • 例えば、完全に制御可能なコンテンツのデシリアライゼーション点:アンシリアライズ(制御量)
  • file_exists(「phar形式://悪意のあるファイル」)に存在するファイルをアップロードし、ファイル名は、次のような、ファイル操作機能を使用して、完全に制御可能です
 
 
3デシリアライゼーションの鎖
3.0非直列化点は、いつオブジェクト破壊__desctruct方法が自動的にコードを実行しているクラスを見つけるために、存在します
 
3.1)(removeFiles>の$ this - と呼ばれるWindowsのクラス\ \プロセス\ __destruct方法パイプを考えます。
 
file_existsに呼び出された3.2の$ this - > removeFiles()($ファイル名)
 
file_existsを実行するとき3.3 file_exists()は、($ファイル名)(__toStringクラスをトリガ)、文字列パラメータのタイプを必要とします
 
3.4グローバル検索__toString()、利用可能__toString()を探して、\考える見つけモデル\懸念\変換
__toStringます$ this-> toJson()、toJson()内のコールが(の$ this - >のtoArray()、$ options)はjson_encode内を呼び出します。
 
クラス内の3.5変換、の$ this - >のtoArray()、このからの$ relation->可視($名)、$関係$および$名があり、制御可能
 
3.6シーククラスはメソッドと可視__callメソッドを持っている、array_unishift($ argsを、$ this)を実行します__call思う\要求クラスを、発見。
call_user_func_array(の$ this - >フック[$法]、$引数)。
 
同時入力の方法は、\ Requestクラスは、($フィルタ、$データ)をcall_user_funcに対応し、しばしば偉大なガジェット鎖であるが、パラメータ配列オブジェクトの先頭に挿入array_unishiftは、コールの入力方法を見つける必要があるため、最初だと思います制御可能なパラメータ機能の着信Requestオブジェクト
 
3.7の$ this - > paramはisAjaxを見つけ、インプットメソッドと呼ばれ、isPjax方法は、工事が完了し、ます$ this->のparamと最初のパラメータの制御を呼び出しを見つけます
 
 
 
 
 
 
 
 
 
 
 
 

おすすめ

転載: www.cnblogs.com/junmoxiao/p/11774759.html