SQLにphpを置くことは危険ですであるため、ビューのカスタムphpフィールド、フィルターなどを使用することは悪い習慣であると何度も言われました。
私の質問は、モジュールで定義した関数を呼び出すだけの場合でも、それでも悪いのですか?
場合によっては、特にビューの場合、カスタムハンドラーや他の例ではカスタムトークンを作成すると、非常に負荷がかかることがあります。
関数のみを呼び出すカスタムフィールドを作成すると、どのようなリスクがありますか?危険で「禁じられている」のでしょうか?
これが私の見解です。
PHP docsは eval
について述べています:
その使用はお勧めできません
alwaysですが、もう一度強調しておきますが、always、PHP =モジュール(技術的にはevalですが、PHPモジュールは危険な言語機能をはるかに悪化させます)。
この質問で説明されている詳細: PHPブロック、ノード、ビュー、引数などのフィルターコード)を使用することの欠点は何ですか?
Cliveの主張が提供するリンク
時々evalが唯一の/正しい解決策です。
これが真実である場合もありますが、かなりの数年間の専門能力開発の間に、私はneverで実際のニーズに遭遇しましたPHPまたは他の言語。
個人的には、サーバーがphpレベルの機能をdisable_functions = eval
で無効にするレベルにしました。
そうは言っても、小さな個人のWebサイトでは、大企業のWebサイトよりも影響が少ない可能性が高く、少なくとも完全に恐ろしいものではない場合があります。
ここにはいくつかの素晴らしい答えがありますが、CMS内でphpを実行できるようにすることはセキュリティの問題であるため、なぜに対処できないと思います。
私の意見では、php.moduleや独自の評価を行う他のモジュールの問題は、Drupalサイトを利用できるようにすることです(を参照) note)は、任意のphpを実行する機能を備えています。現在進行中の WordPressブルートフォース 攻撃は、WordPressサイト。サイトを改ざんするだけの能力を誰かに与えた場合、それは厄介な問題ですが、それ以上ではありません。任意のphpを実行する能力を与えた場合(通常はそれを行います)、それはそれらにとって恐ろしいことですサイト、同じサーバー上でホストされている他のサイト、さらにはインターネット全体でさえ、これらのサイトは、所有者が望むすべてを実行できる巨大なボットネットになります。
WordPressがphpの実行を許可しなかった場合、それはこの攻撃の価値ある標的になるでしょうか?おそらくそうではありません。
それで、あなたは何ができますか? letharionのdisable_functionsに関するヒントは素晴らしいものです。 パラノイアモジュール もあります。これは、phpを実行する人々の能力を減らすのに役立ちます。
無効なPHPコードをフォームのtextareaに追加すると、致命的なエラーでサイトがオフラインになる可能性があります。また、機能が追加されていない場所を特定できない場合、ソースコードファイルであり、代わりにあいまいなデータベースフィールドにあります。
モジュールで定義された関数を呼び出す方が簡単ですが、ソースコードを適切に追跡できますが、そうする場合は、機能などのモジュールを使用してこれらのビューなどをエクスポートして保存することをお勧めします。コードはバージョン管理で適切に追跡できます。
ほとんどの場合、同等のAPIがあり、PHPコードのほうが適切です。たとえば、hook_block_viewやカスタムViews引数ハンドラーなどです。