web-dev-qa-db-ja.com

スタンドアロンPHPファイルをDrupal 6に入れますか?

さらにクールなPHPクラスを追加したいのですが、Drupalのどこに配置しますか?コードがセキュリティリスクを引き起こさないようにするにはどうすればよいですか?モジュール?

4
palbakulich

あなたの最善の策は、カスタムモジュールを介してそれを含めることであり、それを含めることは module_load_include() を使用するのと同じくらい簡単です。

セキュリティに関しては、Drupal コーディング基準 のドキュメントを参照することをお勧めします。残念ながらD7とタグ付けされていて、古いD6を見つけることができませんでしたバージョンですが、一般的に次の標準はいくつかのセキュリティ問題を防ぐのに役立ちます。

Drupal専用に作成されていないコードも、そのままでは特に機能しない可能性があります。コードをより適切に統合するには、ブリッジを作成する必要がある場合があります。それ以外の場合は、完全に書き直す必要があります。 。

4
Decipher

ここでは2つの質問が出されます。

  • PHPクラスをモジュールにする必要がありますか?
  • セキュリティの問題が含まれていないことをどのように確認できますか?

独自のPHPクラスを配布している場合、または独自の顧客にクラスを提供している場合は、モジュールのクラスの一部をモジュールにすることは、私がやることです。クラスがモジュールを使用すると、サードパーティのモジュール(またはクライアントに提供するカスタムコードの一部として開発した別のモジュール)でも、クラスが使用可能かどうかを簡単に確認できます。また、他のモジュールが=を使用しないようにすることもできます。 PHPクラス、ファイルを削除する必要はありません。他のモジュールが、クラスが使用可能かどうかをチェックするのではなく、モジュールが使用可能かどうかをチェックする場合(module_exists()を使用することを意味します)。
With Drupal 7を使用すると、サードパーティのモジュールから定義されたクラスのオブジェクトをより簡単に作成できます。モジュールがクラスを含むファイルを最初にロードする必要さえない場合、このようなファイルを含むモジュールは、ディレクティブfiles[]を使用して。infoファイルにリストします。この操作は、Drupalから自動的に行われます。それが実装するレジストリ。

コードをモジュールに入れても、自動的に安全になるわけではありません。安全なコードを作成するには、 安全なコードの記述 で報告された内容に従う必要があります。 Drupalコーディング標準 に従うと、他のユーザーから理解しやすいコード(つまり、コードに存在するセキュリティの問題やその他の問題を簡単に見つけられる)、または競合を引き起こさないコードを作成できます既存のモジュール。コーディング標準は、SQLインジェクションを回避する方法を提案する場合など、特定の箇所を除いて、安全なコードの記述方法を報告しません。

Drupal 7のコーディング標準が更新されていないことに注意してください。実際、SQLプレースホルダーの使用に関する部分は、まだDrupal 6コードを参照しています。

1
kiamlaluno

はい、カスタムモジュールを作成し、その中にクラスを配置することで簡単に行うことができます。そのクラスの機能をフックなどのDrupalに接続するには、とにかくいくつかのグルーコードが必要になる可能性があります。

あなたはいくつかのことに注意する必要があります:

  • DrupalはGPLです。 Drupal(XML-RPCまたはREST Serviceとは対照的に)によって直接呼び出される)コードはすべてGPLまたはGPL互換である必要があります。そのクラスを保持する場合自分にとっては、それほど大きな問題ではありません(それでもライセンス違反ですが、誰も確認できません;))配布したい場合は、重要になります。

  • そのモジュールをリリースする予定がある場合は、そのクラスを自分で含めないでください。代わりに、ユーザーに自分でダウンロードするように指示する必要がありますevenクラスがGPLの場合互換性があります。 http://drupal.org/project/libraries を参照してください

0
Berdir