4

質問を読んで否定的に考えないでください。私はたくさん検索したので、どこでもこの質問がたくさん聞かれていることを知っていますが、これについて適切な解決策が得られていないことはわかりません。

DBへの保存とDBからの取得において、データを(SQLインジェクションと xss から)安全にしたい。

私のCI構成設定:

$config['global_xss_filtering'] = FALSE;

私のDB追加クエリ:

$add_data['name'] = $this->db->escape($name);
.....
.....
$this->db->insert($this->table, $add_data);

私のDBビュークエリ:

$q =$this->db->select($this->fld);
$q = $this->db->where("$this->cond");
$q = $this->db->order_by($this->sortid, $this->sortby);
$q = $this->db->limit( $this->limit,$this->offset);
$ret=$q->get()->result_array();

私の問題は:

DB 値には一重引用符が含まれています。$name = DB の abc の場合: 'abc'

質問 :

引用されたデータを表示したい場合 引用符なしで表示するにはどうすればよいですか。

プラス

データベースに一重引用符を追加しないようにするにはどうすればよいですか。

4

2 に答える 2

2

を使用する場合、データをエスケープする必要はありませんCI insert。アクティブなレコードは、自動的に値をエスケープします。あなたの例では:

/* $add_data['name'] = $this->db->escape($name); - not need */
$add_data['name'] = $name;
.....
.....
$this->db->insert($this->table, $add_data);

CI アクティブ レコードを読み取ります。各機能の説明があります。また、エスケープが必要なものとそうでないものがあります

于 2012-04-11T14:34:58.423 に答える
0

アクティブ レコードは値を自動的にエスケープします。引用符なしで文字列を表示するには、文字列ヘルパーを使用できます。

$string="Joe's \"dinner\"";
$string=strip_quotes($string); //results in "Joes dinner"

ユーザーズ ガイドに記載されています。

于 2012-04-11T14:40:49.580 に答える