3

私はこれまでPDOの経験がないので、私の質問は単純すぎるように聞こえるかもしれません。
PDOはセキュリティの点でmysql/mysqliよりも優れていると何度か聞いたことがありますが、CodeigniterはPDOドライバーをサポートしているため、新しいプロジェクトで変更を加えることにしました。

しかし、Codeingiterはプリペアドステートメントを使用しておらず、(私は)PDOを使用するポイントを逃していることを知っているので、それは正しいですか、それは安全ではありませんか?
だから私の質問:codeigniterでPDOドライバーを使用することは安全でないと考えられていますか?
そして、それは私が自分で基本的なセキュリティの世話をしなければならないという意味ですか?

4

3 に答える 3

1

すべてのクエリ呼び出しは、やなどの簡略化された関数でエスケープされ$this->dbます。これにより、自動化されたセキュリティが追加されます。delete()get_where()

あまりにもずさんな書き方の場合は、たとえば他のユーザーのコンテンツを編集するためのアクセスをユーザーに許可することができます。したがって、完全なセキュリティに対する魔法の解決策はありません。あなたがより詳細であるほど、あなたのコードはあなたのためにより正確に機能します。

カスタムクエリが必要な場合は、次のように実行できます。

$int_user_id = 1;

$this->db->query("
SELECT *
FROM users
WHERE id = ?
", array($int_user_id));

注:IN ()とを実装するLIKEには、それに応じてエスケープする必要があり、とを挿入しないarray()でください?

query()
escape()

于 2012-07-05T06:58:31.423 に答える
0
 1. Database Support

MySQLに対するPDOの主な利点は、データベースドライバーのサポートにあります。PDOは、CUBRID、MS SQL Server、Firebird / Interbase、IBM、MySQLなどのさまざまなドライバーをサポートしています。

 2. Security

どちらのライブラリも、開発者が意図したとおりに使用する限り、SQLインジェクションのセキュリティを提供します。プリペアドステートメントは、バインドされたクエリで使用することをお勧めします。

 3. Speed

PDOとMySQLはどちらも非常に高速ですが、MySQLのパフォーマンスはベンチマークでわずかに速くなります。プリペアドされていないステートメントの場合は約2.5%、プリペアドステートメントの場合は約6.5%です。

于 2012-07-14T09:50:22.110 に答える
-1

私が知っていること(CodeIgniter初心者;))から、ActiveRecordsでセキュリティをかなりうまく処理します。PDOを使用しているかどうかはわかりませんが、非常に使いやすく、クエリは非常にクリーンに見え、クエリキャッシュがあります。

于 2012-07-04T17:09:10.000 に答える