プリペアド ステートメント (パラメーター化されたクエリ) を使用すると、SQL インジェクション攻撃を防ぐために使用できることを学びましたが、この記事で言及されている例外はほとんどありません。.
私の質問は、準備されたステートメントが SQL インジェクションをどのように防ぐのかということです。これまでに学んだこと:
パラメーター化されたクエリを使用する場合、クライアントは準備 (最適化) のためにデータなしでクエリをサーバーに送信し、その後、ユーザー データが元のクエリの外に存在するようにパラメーター (ユーザー入力またはその他) がサーバーに送信されます。
準備されたクエリを使用する場合、ユーザー データがエスケープされていないと、SQL インジェクションを防ぐことはできません。
このため、 、 、 を使用するとすべてデータがエスケープされるため、エスケープされていないパラメーターを使用して準備されたステートメントの安全性をテストするために、エスケープされていないデータを送信できないため、この例をテストexecute()
できbind_param()
ませbinVlaue()
んbinParam()
でした。