-1

フレームワークなしでPHPを使用した場合、次のような投稿を検証します

$username = trim(mysql_real_escape_string($_POST['username']));

しかし、CodeIgniterでは私は次のようなことをします

$username = $this->input->post('username');

CodeIgniterは文字列をクリーンアップしますか、それとも私はそれをしなければなりませんか?

4

2 に答える 2

1

CodeIgniterの入力クラスは、セキュリティクラスのfilterメソッドを$_POST介してすべての情報をフェッチします。xss_clean()

このメソッドのドキュメントとその名前は、これがクエリ文字列サニタイザーではないことを示しています(質問で提案されているように)。代わりに、CIは、データベースドライバーとバインディングを使用するときに、クエリを実行する前に巧妙にサニタイズを実行します。

「クエリバインディング」の下のデータベースクエリドキュメントの適応:

$sql = "SELECT * FROM some_table WHERE id = ?";

$this->db->query($sql, array($this->input->post('id')));
于 2013-01-25T18:43:56.007 に答える
1

組み込みのデータベースライブラリを使用すると、Codeigniterは文字列を自動的にサニタイズします。

あなたの質問では、入力値にアクセスしているだけで、処理やデータベースアクティビティはまったく行っていません。

フォーム検証ライブラリを使用して、アクセスしている入力に対して任意の検証を行うことができますが、これは、フォーム処理コントローラーではなく、フォームビューを呼び出すコントローラーで行われます。

于 2013-01-25T18:45:19.690 に答える