6

開発中のサイトに安全なログインを作成しようとしています。

PHPでMySQLデータベースを使用しています。

ユーザーとその情報をデータベースに追加するフォームを作成できますが、ログインで機能させることができないようです。

HTML で使用される暗号化の種類は何<input type="password">ですか?

ユーザーがサイトにアクセスしている間、ログイン状態を維持するにはどうすればよいですか?

ユーザー名と一致する正しいパスワードかどうかを安全に確認するにはどうすればよいですか?

私はおそらく1年ほどPHPをやっていますが、この部分をまだ学んでいないので、知っておくといいでしょう.

4

4 に答える 4

11

html < input type=password > で使用される暗号化のタイプは何ですか??

なし。入力は、「モニターを見る」攻撃から保護するためにマスクされているだけです。

セキュリティが必要な場合は、HTTPS (SSL を使用した HTTP) 経由でデータを送信します。

ユーザーがサイトにアクセスしている間、ログイン状態を維持するにはどうすればよいですか?

ほとんどの人はクッキーを使用しています。

ユーザー名と一致する正しいパスワードであるかどうかを安全に確認するにはどうすればよいですか??

安全に?

共有サーバーを使用しないでください。そのサーバー上のデータを安全に保つための通常の手順に従います。パスワードを平文ではなくハッシュとして保存します。

小切手?

送信されたパスワードを一致するハッシュに変換し、通常どおり比較します。データをデータベースに保存すると仮定すると、SELECT FROM users WHERE user=? AND パスワード=? 返された行数を数えます。

于 2009-07-13T14:56:30.787 に答える
2

質問のパスワード保護の部分について説明します。

パスワード入力タイプには組み込みの暗号化はありません。ブラウザーは、他のすべてと同様にプレーン テキストとして送信します。パスワードを保護するには、2 つの方法があります。

1 つ目は、チャレンジ/レスポンス システムをセットアップすることですが、これには Javascript が必要です。基本的に、ユーザーのパスワードを取得し、ハッシュ関数がサーバーに保存されている場合はハッシュ関数を適用し、サーバーチャレンジトークンを取得して、新しいハッシュのパスワード値をソルトします。サーバーはパスワードの値を取得し、チャレンジも適用します。それらが一致する場合、パスワードは正しく、実際のパスワードが何であったかを知る方法はありません。このアプローチを有効にするには、クライアント側でハッシュを生成する必要があるため、これには JavaScript が必要です。

別のより単純なオプションは、サイトのログイン部分に HTTPS を要求することです。

于 2009-07-13T15:00:50.827 に答える
1

デビッドが言ったように、デフォルトではパスワードの暗号化は行われないため、https を使用して暗号化を維持してください。

ユーザーのログイン状態を維持するには、ログイン ページで、データベースに保存されているパスワードと照合します。パスワードをハッシュ化し、ハッシュ化したパスワードをデータベースに保存する必要があります ( cryptを参照)。次に、ユーザーがログインするときに、ユーザーからのパスワードをハッシュし、データベース内のハッシュされたパスワードと比較します。一致する場合はログインし、一致しない場合はログインに失敗します。データベースが侵害された場合、少なくともパスワードはありません。

ユーザーがログインしたままにするには、パスワードを確認した後、セッションに変数を設定します。

 $_SESSION[loggedin] = true. 

リクエストごとに、このセッション変数を確認し、true の場合はページへのアクセスを許可し、false の場合はユーザーをログイン ページにリダイレクトします。

 header("Location: /login.php");
于 2009-07-13T15:02:56.000 に答える
0

パスワード入力は暗号化されません。(フォームによって返される)プレーンテキストのパスワードを保存したくない場合は、phpとmysqlの両方で提供されるいくつかの関数のいずれかを実行する必要があります。パスワードを保存するためのphpのmd5sha1、またはmysqlの暗号化を確認してください。

次に、ログインに正しいパスワードを入力したかどうかを確認するために、入力に任意の暗号化方法を使用し、データベースからハッシュされたパスワードを取得して比較できます。(また、ソルトパスワードを調べてください)

永続的なログインセッションを行うには、phpの$_SESSION変数を使用できます。またはsetcookie()

于 2009-07-13T15:05:02.363 に答える