0

重複の可能性:
PHP で SQL インジェクションを防ぐ最善の方法は?

私は最初のオンライン ショップを構築しており、PHP コードを自分で作成し、MySQL データベースを使用しています。データベースが危険にさらされないように、入力に対してデータ検証を行うことが非常に重要であるとアドバイスされました。どの検証を含めるか、または推奨される信頼できるチュートリアルを誰かに教えてもらえますか。

前もって感謝します

4

2 に答える 2

1

このサイトで「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 をパラメーター化された SQL として構築します。つまり、ユーザー入力をパラメーターにバインドします。
  • ストアド プロシージャを呼び出す (私は気に入っていますが、万人向けというわけではありません)

データベースドライバーは、ユーザーが入力したすべてのものを単一の値としてバインドすると同時に、ビジネスロジックをデータベースから除外するため、パラメーター化された SQL を使用します。

于 2012-10-24T13:12:15.440 に答える
0

Mysql Validation は、MySql インジェクションからクエリを防ぐ必要があることを意味します。mysql インジェクションを回避するために、以下をお読みください。

http://rosstanner.co.uk/2012/01/php-mysql-preventing-mysql-injection/

于 2012-10-24T13:17:04.710 に答える