2

ユーザーがデータベース上の特定のテーブルを検索できるようにする検索関数を作成しています。私のウェブサイトはCodeIgniterで実行されています。

検索関数には、CodeIgniter $ this-> input-get()の代わりに$ _GETを使用します。これは、ヘルパー関数内で後者を使用するのに問題があったためです。

さて、ここにセキュリティの質問があります:

XSSとSQLインジェクションを防ぐために、$ _ GET配列内の悪意のある文字をサニタイズおよびフィルタリングするための最良の方法は何ですか?

$ _GET配列のデータは、データベースのクエリとデータベースからの情報の取得に使用されることに注意してください。

要素を1つずつ通過することなく、$ _ GET配列全体を再帰的にクリーンアップする方法はありますか?

PHPのフィルターメソッドまたはCodeIgniterのフィルターメソッドを使用する必要がありますか?

どんなアドバイスも大歓迎です!前もって感謝します!

4

2 に答える 2

4

Codeigniterはデフォルトで$_GETを無効にします。URIクラスを使用すると、$_GET変数をシミュレートできます。

CodeIgniterを使用してURLのパラメータを取得する

あなたはそれをハックして$_GETを使うことができます、それはあなたがやったように聞こえます。しかし、私はそれをお勧めしません。CodeIgniterのInputクラスを使用する必要があります。これによりXSSフィルタリングが提供され、次のコマンドを実行して$_GET配列全体をクリーンアップできます。

$this->input->get(NULL, TRUE); // returns all GET items with XSS filter 

Codeigniterのデータベースユーティリティクラスを使用してクエリを実行する場合、エスケープ関数が組み込まれています。「クエリのエスケープ」セクションを参照してください。

http://ellislab.com/codeigniter/user-guide/database/queries.html

于 2013-01-26T15:22:51.623 に答える
2

You can use $this->db->escape($variable) to escape values in queries. It is strongly recommended to use CI's input class though.

Read more at : http://ellislab.com/codeigniter/user-guide/database/queries.html

于 2013-01-26T14:58:58.073 に答える