私はPDOを使用する前にすべての変数をフィルタリングしています。その時、私は通常弦を逃げてその長さを調べます。値が整数または他の数値であれば、値が実際に必要な型と値であることを理解しようとします。PHP:PDOを使用すると本当に安全ですか?古い方法の衛生措置や脱出がなくても?
しかし、PDOを使用した後に、セキュリティのために私が唯一のものであり、PDOが設定:: PARAM_ *以下のようなオプションを結合として..
$stmt = $this->db->prepare("select * from $dbSessionTableName where acntid = ? and end > now()");
$stmt->bindValue(1, $_SESSION['account_id'], PDO::PARAM_INT);
$stmt->execute();
が、これは本当に安全ですか?
これは答えることができません。はい - SQLインジェクションに対して安全です。しかし、あなたのユーザーは、リプレイ攻撃やハイジャックなどのセッションベースの攻撃に対して脆弱である可能性があります。 – max
関心のあるポイント、 '$ _SESSION ['account_id']'はサーバのvarであり、値は設定する前に既に消されていなければなりません。特にこれがデータベースからの直接的な値であり、信頼できるものであれば、準備する必要はなく、[query()](http://php.net/manual/en/pdo.query.php)を使うことができます) 直接。 – Xorifelse
私がデータベース接続について研究していたとき、私が変数を消毒しなければならないことがわかった唯一の理由は、注射を防ぐことにあります。この観点から、私はPDOを使用する際のセキュリティについて本当に信頼しています。私は正しい? ..または多分私はこの主題についてあまりにも心配している.. – GatesPlan