4

こんにちは、Codeigniters のアクティブ レコード クラスを使用することは、セキュリティ上の問題に関して、準備されたステートメントを使用することと同等かどうか疑問に思っていましたか?

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

?>

対。

 $data = array(
   'title' => 'My title' ,
   'name' => 'My Name' ,
   'date' => 'My date'
);

$this->db->insert('mytable', $data); 

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')
4

2 に答える 2

5

CI はプリペアド ステートメントをサポートしていませんが、クエリ バインディングはサポートしています。クエリ バインディングと準備済みステートメントの両方が、SQL インジェクションを防ぎます。しかし、使いやすさからARの方が好きです。また、クエリが読みやすくなります。

詳細については、このリンクを確認できます。

そして、このリンクからCIクエリバインディングを確認してください

于 2013-04-21T05:26:10.207 に答える