0

登録フォームを作成し、JÖRN ZAEFFERER による jQuery Validation プラグインを実装しました。これには、CSS を使用したエラー メッセージのスタイル設定も含まれます。JS がオフになっている場合に備えて、PHP のレイヤーを追加して 2 回目の検証を行いたいと考えています。それに続いて、セキュリティを介してデータを実行します: ハッシュ/ソルト/暗号化など、データを mySql テーブルに挿入する前に、サインアップ プロセスの一部として電子メールでアカウントを確認するプログラムを作成します。

私は独学なので、経験豊富な方なら誰でもこのプロセスのベスト プラクティスを説明できます。私が持っている質問は次のとおりです。PHPはどこに行くべきですか、htmlファイルに埋め込むべきですか、フォーム action = "" が送信する別のphpファイル、またはインクルードファイルに埋め込むべきですか? ソルト、ハッシュ、または暗号化関数をインクルード ファイルに含める必要がある場合、セキュリティに関するベスト プラクティスは何ですか? 最後の質問は次のとおりです。jQuery の検証は時間の無駄ですか、PHP だけで行う方がよいでしょうか。両方を行う場合、PHP 自体が HTML ファイルに埋め込まれますか、それとも別の場所に配置した方がセキュリティ上よいでしょうか。

これは私がこれを行ったのは初めてですが、入力を安全にデータベースに入れ、電子メールで確認し、新しいユーザーにログインしてWebサイトにアクセスして使用するだけです.

最初にベスト プラクティスを知りたいので、ウェブ上に良い記事があれば、リンクしてください。

ありがとう

アントパワー

4

2 に答える 2

2

それで、あなたはここで多くの異なる質問をしました。それらを1つずつ見ていきます。

PHP は、html ファイル、フォーム action = "" が送信される別の php ファイル、またはインクルード ファイルに埋め込む必要がありますか?

PHP が HTML ドキュメントに直接組み込まれることはありません。むしろ、PHP を動的 HTML ジェネレーターと考えてください。ブラウザに送信される HTML (または JSON など) を作成しますが、実際にはブラウザ自体には送信されません。JavaScript のようなものとは対照的に、サーバーサイド言語と呼ばれるのはそのためです (これもサーバーサイドである可能性がありますが、それは関係ありません)。したがって、検証を好きな場所に配置しても問題ありません。フォームactionが呼び出されたときに発生する必要があるため、それが発生する場所にある必要があります。次のようなものが機能するはずです。

<?php

function validate($data) {
  // Do your validation here, and return an array of errors.
  return $errors;
}

// Run the validation on the data posted from the form.
$errors = validate($_POST);
if (empty($errors)) {
  // The data was valid, save it to the database
  // (be sure to sanitize the data first).
} else {
  // The data was not valid, redirect the user or whatever.
}

ソルト、ハッシュ、または暗号化関数をインクルード ファイルに含める必要がある場合、セキュリティに関するベスト プラクティスは何ですか?

はい、暗号化機能を使用します。セキュリティを確保するために別のファイルにする必要はありません。ユーザーがファイルを見ることができないという事実ではなく、暗号化機能がセキュリティを提供するものです (読み取り: 実際のセキュリティであり、難読化によるセキュリティではありません)。ただし、値をハッシュするために使用するソルトは、Web 経由でアクセスできない別のファイルにある必要があります。ユーザーがハッシュ アルゴリズムとソルトを見ることができる場合、ユーザーはデータの総当たり攻撃を開始できます。

jQuery の検証は時間の無駄ですか? PHP で行う方がよいでしょうか?

jQuery の検証は、実際の検証よりも UI/UX の改善と見なす必要があります。既に述べた理由により、クライアント側 (読み取り: JavaScript) の検証がサーバー側 (読み取り: PHP) の検証に取って代わるべきではありません。しかし、ユーザー エクスペリエンスの向上に貢献できると思うので、両方を行う価値がある場合もあります。

私が行うことの 1 つは、サーバー側とクライアント側の検証に同じ方法を使用することです。これにより、検証コードを 2 回記述する必要がなくなります。たとえば、検証関数を別のファイルに配置すると、AJAX を使用してフォーム データを送信し、フォーム エラーを受け取ることができます。

お役に立てれば!

更新: また、ユーザーのログインを行っている場合はpassword_compat、PHP 5.5 で PHP 標準ライブラリの一部となる を確認してください。そのライブラリは、アップグレード可能な方法で、多くのセキュリティ上の問題を処理する必要があります。

于 2012-09-25T20:09:41.307 に答える