1

私は最近アクティブレコードを使い始めました(私はそれらに慣れていたので、手動クエリを書く前に)。

ion_authのコードを調べていたところ、アクティブレコードが使用されていても、いくつかの場所で文字列がエスケープされていたことがわかりました。

すなわち

 ->where($this->identity_column, $this->db->escape_str($identity))
 ->where($this->tables['groups'].'.name', $this->db->escape_str($group))

ドキュメントではアクティブレコードが文字列を自動的にエスケープすると言っていたので、アクティブレコードを使用した場所ではエスケープしていません。

私の質問は、アクティブレコードを使用するときに、文字列をエスケープする必要がある状況がありますか?

4

3 に答える 3

5

Codeigniterユーザーガイドから:

単純さを超えて、Active Record機能を使用する主な利点は、クエリ構文が各データベースアダプターによって生成されるため、データベースに依存しないアプリケーションを作成できることです。また、値がシステムによって自動的にエスケープされるため、より安全なクエリが可能になります。

ion_authの作成者は、文字列をエスケープする特別な理由がある可能性がありますが、Active Recordを使用している場合、Codeigniterはクエリを自動的にエスケープします。

ただし、Active Recordのように「見える」クエリがあり、エスケープする必要があります。これもCodeigniterユーザーガイドのリストです。

于 2012-10-29T19:37:24.673 に答える
0

通常、codeigniterに処理させることができます。場合によっては、アクティブレコードを使用してより複雑なクエリを作成している場合(例:$this->db->where('(some sql where clause)')DBライブラリのエスケープメソッドを使用できます)。

于 2012-10-29T16:35:46.833 に答える
0

いいえ、エスケープを使用する必要はありません。一重引用符と二重引用符を組み合わせたさまざまな形式のテキストを試してみましたが、すべてのhtmlタグも問題なく機能します。

于 2012-10-30T05:10:48.030 に答える