2009-07-13 20 views
6

私が開発しているサイトで安全なログインをしようとしています。安全なログインを作成する

私はちょうどそれを動作させることはできません、私はPHPでMySQLデータベースを使用します。

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

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

ユーザーは自分のサイトを訪れている間、どのようにログインしたままにしますか?

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

私は多分1年前からPHPをやっていますが、私はまだこの部分を学んでいないので、知っているといいですね。

+1

downvoteを取得した理由がわかりません。 +1 –

答えて

11

と入力された暗号化の種類は、入力タイプ=パスワード>? です。

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

セキュリティを必要とする場合は、HTTPS(SSL付きHTTP)でデータを送信します。

私のサイトへの訪問中にユーザーをログインさせておくにはどうすればよいですか?

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

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

安全ですか?

共有サーバーを使用しないでください。そのサーバー上のデータを安全に保つための通常の手順に従います。プレーンテキストではなく、パスワードをハッシュ形式で保存します。

を確認してください。

提出されたパスワードを一致するハッシュに変換してから、通常と同じように比較します。データをデータベースに格納すると仮定すると、ユーザーからのSELECT WHERE user =?とパスワード=?あなたが戻った行の数を数えます。

+6

+1 "監視を見る"の攻撃 –

+0

共有サーバーにはgodaddyが提供するmysqlデータベースが含まれますか?私のウェブサイトをhttpではなくhttpsにするにはどうすればいいですか?それにはsslが関係していますか? – techy

+0

私はGodaddyシステムの設定にコメントできません。私はその会社の近くに決して行くことのない恐怖の話を聞いたことがある。 HTTPSを使用するには、SSL証明書を購入してからインストールします。これはサーバーによって異なります。 – Quentin

2

質問のパスワード保護部分に対処します。

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

最初はchallenge/response systemを設定しますが、これにはJavascriptが必要です。基本的には、ユーザーのパスワードを取得し、サーバーに保存されている場合はハッシュ関数を適用し、サーバーチャレンジトークンを取得し、新しいハッシュのパスワード値をsaltします。サーバーはパスワードの価値を受け取り、チャレンジを適用します。それらが一致すれば、パスワードは正しいと誰もが実際のパスワードが何だったか知る方法がありません。このアプローチを有効にするには、クライアント側でハッシュを生成する必要があるため、javascriptが必要です。

もう1つ、より簡単なオプションは、サイトのログイン部分にHTTPを要求することです。

+0

+1をチャレンジ/レスポンス方式で収集します。 – Residuum

1

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

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

、ログインしたユーザを保つパスワードをチェックした後、セッション変数を設定し、リクエストごとにすなわち

$_SESSION[loggedin] = true. 

、このセッション変数をチェックし、それが本当であれば、アクセスを許可しますページに偽の場合は、

header("Location: /login.php"); 
0

パスワード入力が暗号化されていないユーザーをログインページにリダイレクトします。プレーンテキストのパスワード(フォームから返される)を保存しない場合は、phpとmysqlの両方で提供されるいくつかの関数のいずれかを実行する必要があります。 PHPのmd5sha1、またはmysqlのパスワード保存用のencryptをチェックしてください。

次に、正しいパスワードを入力してログインしているかどうかを確認するには、エントリに暗号化方式を使用し、データベースからハッシュされたパスワードを取得して比較します。 (また、salting passwordsを参照してください)

永続的なログインセッションを持つには、PHPの$_SESSION変数を使用することができます。またはsetcookie()

関連する問題