最近、自分が何をしているのか、私の場合はコピー/貼り付けをしているのかを正確に理解していない限り、PDO は実際には安全ではないと聞きました。それだけでなく、自分のデータベースが攻撃によっても信頼できないとは知りませんでした.手遅れになる前に安全に。それだけでなく、私はユーザーが自分のゲームを保存できるゲームの Web サイトを作成しています。ゲームの保存データを失うと、私たちの多くは本当にひどいことを知っています。現在、私の PDO 接続は次のようになっています。
$DataB = new PDO( 'mysql:dbname = dbname; host = host.host.host; charset = utf8', 'username', 'password' );
$DataB -> setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
$DataB -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
正直なところ、私が知っているのは、それが PDO であり、機能するということだけです。変更しなければ、これはかなり安全に使用できますか? また、データを挿入するときはどうなりますか? さて、このように:
$a = $DataB -> prepare( "INSERT INTO `names` (`first`,`last`) VALUES (?,?)" );
$a -> execute( array( $FirstName, $LastName ) );
正直なところ、私がそれを正しく書いたかどうかはあまりわかりませんが、それは私が作成した個人的な機能にそれがあり、それをデコードできるようになるまでに時間がかかるためです (以下も同様です)。更新のために、私はこれを使用しています:
$DataB -> prepare( "UPDATE `names` SET :fn WHERE id = :a" ) -> execute( array( ':a' => $IDnumber, ':fn' => $NewFname ) );
これは同じようなものですが、1行で機能します。それが重要かどうかはわかりませんが、私は天才ではありません。しかし、私は可能な限り短いコードを好みます。今、私の選択:
$a = $DataB -> prepare( "SELECT * FROM `names` WHERE `password` = :pw AND `email` = :e " );
$a -> execute( array( ':pw' => $_COOKIE['password'], ':e' => $_COOKIE['email'] ) );
while ( $b = $a -> fetch( PDO::FETCH_ASSOC ) ) { $Fname = $b['first'] }
echo $Fname;//<-filtered html in real life
自分のデータベースも信頼できないと聞いたので、持っている PDO に欠けているフィルターがあるかどうか疑問に思います。さて、これは私のデータベース ユーザーのものであり、余分に欠けているものはありません (まあ、重要な欠けているものは何もありません)。はい、この Web サイトでこれを読みましたが、PHP 5.3.6 より前の特定の攻撃を防ぐことはできないと書かれていますが、私の Web サイトには PHP 5.3.0 しかありません。または、それは私が尋ねた生きている人が言ったことです。それでも、私のデータベースの使用方法が適切な使用方法であるかどうかは定かではありません。誰がどのように見えるかを知っているときに、データを挿入、更新、および選択するとき/他のユーザーが作成したとき。
簡単に言えば、これが PHP 5.3.0 で動作することを確認する必要があります。また、ランダムなユーザー作成データで重要なことを台無しにすることはありません。