ThinkPHP は操作なし、空のコントローラー処理

高洛峰
リリース: 2023-03-05 15:52:02
オリジナル
1505 人が閲覧しました

専門家があなたの Web サイトを閲覧すると、Web サイトのエラー メッセージがハッカーにあなたの Web サイトを攻撃するための情報を提供します。たとえば、空のオペレーションと空のコントローラーの場合、Web サイトのバックエンドで使用されるフレームワークがハッカーに公開され、ハッカーはフレームワークの脆弱性に基づいて Web サイトを攻撃します。したがって、ハッカーに手がかりを残さずに、空のコントローラーと空の操作を処理する必要があります。

1. ノーオペレーション処理

まず、効果を見てみましょう:
これにアクセスしようとすると、IndexController.class.php ファイルに hello メソッドがありません。メソッドを実行すると、次のメッセージが報告されます:
注: no-op の本質は次のとおりです: オブジェクト (コントローラー) が存在しないメソッドを呼び出す

ThinkPHP空操作、空控制器处理


ThinkPHP を理解している開発者にとっては、これは簡単に理解できます。この Web サイトのバックエンドは ThinkPHP フレームワークを使用していること。では、これらの問題をブロックするにはどうすればよいでしょうか?今日はそれについて話します。

解決策 1、コントローラーに __call($method,$argvs) メソッドを追加します

ThinkPHP空操作、空控制器处理

ThinkPHP空操作、空控制器处理
このようにして、hello メソッドに再度アクセスすると、コントローラーの __call( がデフォルトで呼び出されます $メソッド,$args) メソッド。

でも!多くのコントローラーがある場合、コントローラーごとに __call($method,$args) メソッドを記述する必要がありますか?明らかに無理です!したがって、継承を通じてこのメソッドをコントローラーの親クラスに書き込む必要があります。 Controller.class.php に移動すると、 __call() メソッドが見つかります。TP の考えでは、コントローラーに _empty() というメソッドが定義されているかどうかによって決まります。定義されている場合は、このメソッドを呼び出します

共通コントローラーの親クラスの場所: ThinkPHP/Library/Think/Controller.class.php

解決策 2

no- の名前と同じ名前のテンプレートを作成します。 op. システムは自動的にテンプレートを呼び出します。

2. 空のコントローラー処理

ThinkPHP空操作、空控制器处理
BeijingController.class.php ファイルがないため、エラーが報告されます。 !
TP フレームワークのソース コードを分析した後、次の解決策が得られます

ThinkPHP空操作、空控制器处理

したがって、空のコントローラーを定義する必要があります。存在しないコントローラーにアクセスすると、指定したエラーに従ってエラーが報告されます。

ThinkPHP空操作、空控制器处理

ThinkPHP空操作、空控制器处理

さて、空のオペレーションや空のコントローラーの話はやめましょう O(∩_∩)O~~

専門家があなたの Web サイトを閲覧すると、あなたの Web サイトはエラーを報告します。あなたのウェブサイトを攻撃するための情報を持ったハッカー。たとえば、空のオペレーションと空のコントローラーの場合、Web サイトのバックエンドで使用されるフレームワークがハッカーに公開され、ハッカーはフレームワークの脆弱性に基づいて Web サイトを攻撃します。したがって、ハッカーに手がかりを残さずに、空のコントローラーと空の操作を処理する必要があります。

1. ノーオペレーション処理

まず第一に、効果を見てください:
これにアクセスしようとすると、IndexController.class.php ファイルに hello メソッドがありません。メソッドを実行すると、次のメッセージが報告されます:
注: no-op の本質: オブジェクト (コントローラー) は、それ自体には存在しないメソッドを呼び出します

ThinkPHP空操作、空控制器处理


ThinkPHP を理解している開発者にとって、それは簡単です。この Web サイトのバックエンドが ThinkPHP フレームワークを使用していることを確認してください。では、これらの問題をブロックするにはどうすればよいでしょうか?今日はそれについて話します。

解決策 1、コントローラーに __call($method,$argvs) メソッドを追加します

ThinkPHP空操作、空控制器处理

ThinkPHP空操作、空控制器处理
このようにして、hello メソッドに再度アクセスすると、コントローラーの __call($method,$argvs) がデフォルトでは ;method,$args) メソッドが呼び出されます。

でも!コントローラーがたくさんある場合、コントローラーごとに __call($method,$args) メソッドを記述する必要がありますか?明らかに無理がある!したがって、継承を通じてこのメソッドをコントローラーの親クラスに書き込む必要があります。 Controller.class.php に移動すると、 __call() メソッドが見つかります。TP の考えでは、コントローラーに _empty() というメソッドが定義されているかどうかによって決まります。定義されている場合は、このメソッドを呼び出します

共通コントローラーの親クラスの場所: ThinkPHP/Library/Think/Controller.class.php

解決策 2

no- の名前と同じ名前のテンプレートを作成します。 op. システムは自動的にテンプレートを呼び出します。

2. 空のコントローラー処理

ThinkPHP空操作、空控制器处理
BeijingController.class.php ファイルがないため、エラーが報告されます。 !
TP フレームワークのソース コードを分析した後、次の解決策が得られます

ThinkPHP空操作、空控制器处理

したがって、空のコントローラーを定義する必要があります。存在しないコントローラーにアクセスすると、指定したエラーに従ってエラーが報告されます。

ThinkPHP空操作、空控制器处理

ThinkPHP空操作、空控制器处理

その他の ThinkPHP の空の操作と空のコントローラーの処理関連記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート