誰かが独自の PHP または HTML フォームを作成し、MY 2 番目の PHP ファイルに POST して、データベースに任意の値を送信できるのではないかと心配しています。
それは可能であり、わざわざ HTML ページを作成する必要さえありません。
これは、データベースへの入力を保護する適切な方法ですか?
これを行う正しい方法は、入力でテーブル名または列名 (または任意の SQL 識別子) を指定できないようにすることです。入力は、列の値または WHERE 句の比較で使用される値のみを指定する必要があります。
必要なクエリを列挙し、必要な特定のクエリをフォームで指定して、その特定のクエリに対して適切に認証されるようにする方法を考え出します。
アドホック レポートを実行しようとしている場合は、明示的にそのように設計してください。 Open Source & Free Adhoc / End User Reporting Toolは、PHP に対応しています。
「アドホック」レポート システムでは、ユーザー自身が特定のカスタマイズされたクエリを作成できます。
準備されたステートメントのような多くの SQL セキュリティのベスト プラクティスでは、テーブル名を使用したクエリのパラメーター化が許可されていないため、アドホック レポートを安全に実行するのは困難です。
ユーザー名、パスワードなどを最初の PHP ページ (フォーム付き) に配置し、これらを変数として 2 番目の PHP フォームに渡したい
これを行っていることはあなたの質問からは明らかではありませんが、明確にするために、データベースのユーザー名とパスワードをエクスポートしたり、フォーム入力がデータベース接続構成に影響を与えたりすることを許可しないでください。これにより、攻撃者はより簡単に
- ファイアウォール内で低電力シェルを実行して、データベースの部分的な乗っ取りを行う機能を隠します。
- Web アクセスと時間だけを与えられたデータベースの管理者パスワードを総当たり攻撃し、SQL インジェクションの欠陥をデータベースの完全な乗っ取りに変えます。