1

これは重複としてマークされる可能性がありますが、私の弁護では、私はしばらくの間検索しており、見つけた情報の多くは関連しているmysqlmysqli、せいぜい、または不完全です. PDOステートメント の使用と準備を考慮した、完全で最新の回答が必要です。

アプリケーション内を移動するデータを処理する適切な方法は何ですか。

次の理論上のデータの流れは適切ですか?そうでない場合、どのような改善をお勧めしますか?

  1. 適切なフォーム検証クライアント側。
  2. $_POSTではなくの使用$_GET
  3. PHP では、$variable = htmlentities($_POST['variable']);データベース挿入の直前に使用します。
  4. 次のようなステートメントを使用PDOして準備しbindValue(':variable', $variable)ました。
  5. 出力時に、echo htmlspecialchars($variable);XSS 攻撃を防ぐために使用します。

関連する 2 つの質問:

  • htmlentities()データベースを挿入する前にデータを使用しているとしましょう。ユーザーが say <p>my input value</p>. これ&lt;tr&gt;&lt;p&gt;my input value&lt;/p&gt;&lにより、データベースに次のように書き込まれます。
  • PHP が AJAX によって処理される JSON 配列を返す場合、そのシナリオで出力をどのように処理しますか? これは PHP では機能しません。 htmlspecialchars($JSON_Array)

これについてご協力いただきありがとうございます。

4

1 に答える 1

3

一般的に言えば、フローは次のようになります。

  1. "Validate" data client side - クライアントから来るものは決して信用してはならないので、この検証を信頼したくありません。これは、ユーザー エクスペリエンスを向上させるために行われます。

  2. サーバーでの検証 - 提供されたデータが有効であることを確認してください。例: 型の検証 (int、string など)、値の検証 (ユーザーはアイテムの負の量を注文できない) など。何らかの MVC 風のフレームワークを使用している場合、これはモデル層。

  3. データをデータベースに保存します。準備済みステートメントを使用して SQL インジェクションから身を守りますが、データを操作したくない (nohtmlentitiesなど)。

  4. データベースからデータを取り出すときはいつでも、HTML、JSON、XML などを出力しているかどうかに基づいて、HTML エンティティを変換するか、その他の処理を行う必要があるかどうかを判断します。

JSON 配列のデータに対して またはそのようなものを使用する必要がある場合はhtmlspecialchars、データを JSON 配列に入れる前にそれを実行してください。

于 2014-01-16T14:27:32.963 に答える