重複の可能性:
PHP で SQL インジェクションを防ぐ最善の方法は?
私は最初のオンライン ショップを構築しており、PHP コードを自分で作成し、MySQL データベースを使用しています。データベースが危険にさらされないように、入力に対してデータ検証を行うことが非常に重要であるとアドバイスされました。どの検証を含めるか、または推奨される信頼できるチュートリアルを誰かに教えてもらえますか。
前もって感謝します
重複の可能性:
PHP で SQL インジェクションを防ぐ最善の方法は?
私は最初のオンライン ショップを構築しており、PHP コードを自分で作成し、MySQL データベースを使用しています。データベースが危険にさらされないように、入力に対してデータ検証を行うことが非常に重要であるとアドバイスされました。どの検証を含めるか、または推奨される信頼できるチュートリアルを誰かに教えてもらえますか。
前もって感謝します
このサイトで「SQL インジェクション」を検索してください。SQL インジェクション攻撃の一般的な原因は、検証されず、データベースに送信される前に信頼できる方法で連結されるユーザー入力です。
たとえば、ステートメントが次の場合:
select col1, col2 from mytable where id =' + <some variable> + ' and xyz = abc
(「some variable」は、SQL に渡されたばかりのユーザー入力です)
その後、ユーザーは入力できます'xxx''; delete from mytable; --'
データベースが取得するものは次のとおりです。
select col1, col2 from mytable
where id ='xxx'; delete from mytable; --' and xyz = abc
大混乱を引き起こします。
したがって、ここでの重要な問題は、検証されていない連結テキストをデータベースに渡して実行させないことです。
これはいくつかの方法で実現できます。
データベースドライバーは、ユーザーが入力したすべてのものを単一の値としてバインドすると同時に、ビジネスロジックをデータベースから除外するため、パラメーター化された SQL を使用します。
Mysql Validation は、MySql インジェクションからクエリを防ぐ必要があることを意味します。mysql インジェクションを回避するために、以下をお読みください。
http://rosstanner.co.uk/2012/01/php-mysql-preventing-mysql-injection/