2016-04-14 17 views
0

私はsidsで動作するメソッドにidからクエリを得たメソッドを作り直そうとしています。Codeigniterの安全なクエリとxssクリーン

だから、基本的にこの:これに

public function view($id) 
{ 
$id = (int)$id; 
$this->db->where('id', $id)->get('recipes') 
} 

:私は、これは安全ではないXSSであることを認識してい第2の方法では

public function view($slug) 
{ 
    $this->db->where('slug', $slug)->get('recipes') 
} 

。私は、クエリバインディングを使ってすべてのクエリをリメイクするのが最善であると思います。そのよう

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 
$this->db->query($sql, array(3, 'live', 'Rick')); 

しかし、私は第二の方法の例ではCodeIgniterのか何かからスラグをきれいにするwhicいくつかの機能を持たせることが可能とされてリメイクする、あまりにもムンクのクエリを持っていますか?

は、クエリでそれを使用する前に、スラグにセキュリティXSS-クリーンな方法を使用することがOK:

$this->security->xss_clean($slug) 
+1

ここで、( 'slug'、$ slug) - > get( 'recipes') 'と入力すると、' $ this-> db-> $ this-> db-> query($ sql、array(3、 'live'、 'Rick')); '2番目の方法は、何百行ものコードを実行しないで同じクエリ。 'view($ id)'の例は、intへのキャストのために入力( '$ id')をサニタイズする効果があります。これにより、防止しようとしている可能性のあるSQLインジェクション攻撃が排除されます。 'xss_clean()'は許可されていない文字も削除しますが、これも許容されますが、効率的ではありません。 – DFriend

+0

私はxss_cleanを除いて、これをすべて知っています。彼らは私がリメイクする必要があるメソッドが多すぎますので、他の開発者から書かれているので、すべてをもう一度テストしたくありません。だから私はxss_cleanで私は私が望むものがあると思う。クエリを保存しますが、すべてのメソッドを簡単に再作成できます。 –

答えて

2

私はあなたの場合は、すべての挿入または更新データは、フォームから来る推測しますアプリケーション/設定/ config.phpファイルに移動し、

$config['csrf_protection'] = TRUE; 

$config['csrf_protection'] = FASLE; 

を設定

これは、すべての入力をフィルタリングするのに役立ちます。

0
public function view($slug) 
{ 
    $slug_new=$this->db->escape_str(trim($slug)); 
    $this->db->where('slug', $slug_new)->get('recipes') 
} 
+0

これは、文字列だけをエスケープします。 –

関連する問題