0

私はCodeIgniterのドキュメントを調べていますが、これが正しいかどうか知りたいです:

  • 毎回$_POSTの代わりに$this->input-> post(x、TRUE)を使用してください

  • PDOを使用するのが最適です。そうでない場合は、クエリを実行する前に、$ this-> security-> xss_clean()を実行してから、$ this-> db-> escape()を実行します。

  • 暗号化システムの代わりにbcryptを使用する

また、フォームを再入力するには、入力のvalue = ""フィールドにpost(x、TRUE)を入力するだけですか、それともprep_for_form()を使用する必要がありますか?

彼らは本当にCodeIgniterでデータを処理する方法についてのドキュメントを書くべきです。

編集:どうやらCodeIgniterのActiveRecordsはすでにすべてをエスケープしているので、db-> escape()を使用する必要はありません...

EDIT2:どうやらform_validationもエスケープしているようです。したがって、form_validationを実行した後にhtmlspecialcharsを実行すると、二重にエスケープされます...この問題をここに投稿しました:https ://github.com/EllisLab/CodeIgniter/issues/2230

4

1 に答える 1

1

1) はい、それ以外の場合は、ファイルでグローバル XSS フィルタリングを有効にconfig.phpして、入力メソッドでパラメーターにアクセスすると常にエスケープされるようにすることができます。

2) CodeIgniter のクエリ ビルダはすでにエスケープを行ってい$this->db->escape()ます。ドライバを使用して独自の SQL クエリを作成している場合にのみ、この関数を使用する必要があります (たとえば、$this->db->query("SELECT * FROM users WHERE id = '" . $this->db->escape($this->input->post('id')) . "' LIMIT 1");

3) Bcrypt を使用します。PHP 5.3.7+ を使用している場合は、PHP 5.5 の組み込み Bcrypt 関数との前方互換性を提供するこのライブラリを使用できます。

于 2013-02-06T03:31:39.837 に答える