-1

まず、Google で検索しましたが、問題の解決策が見つかりませんでした。

私はMAMPを使用してローカルサーバーで作業しており、チュートリアルに従って、md5でphpページを保護しようとしています。

私のlogin.phpページには、送信時にJS関数を呼び出すログイン/パスワードフィールドを持つフォームがあります:

<form id='log' method='post' action='templates/auth.php' onsubmit='javascript:submit_pass();'> 
<input type='hidden' name='md5' /> 
<table align='center'> 
<tr><td>Login</td><td><input name='login' /></td></tr> 
<tr><td>Mot de passe</td><td><input type='password' name='passwd' /></td></tr> 
<tr><td colspan='2' align='center'><input type='submit' value='Login !' /></td></tr> 
</table> 
</form>

送信時に呼び出される login.js スクリプト:

function submit_pass()
{
  pass=document.forms['log'].passwd.value;
  document.forms['log'].passwd.value="";
  buf=MD5(pass);
  document.forms['log'].md5.value=buf;

  return true;
}

次に、パラメーターを POST で auth.php に送信します。

そのため、フィールドにランダムなログインとパスワードを入力します。

私のauth.phpページでは、 $_POST['login'] と $_POST['md5'] をエコーし​​ます

問題は、 $_POST['md5'] が空であることです。そのため、そのサイズをエコーし​​ようとすると、0 と表示されます。

わかりません、何かが足りないのですか?違う?

ありがとう

4

2 に答える 2

1

クライアントでパスワードをハッシュしないでください。何も変わっていないため、セキュリティは向上しません。サーバーは MD5 ハッシュとユーザー名しか見ることができません。それを傍受できれば、ログインに必要なものはすべて揃っています。サーバーは MD5 しかチェックできないためです。

さらに、Javascript には組み込みの MD5 関数が付属していません。

さらに、ソルトなしの MD5 ハッシュは、プレーン テキストのパスワード自体と同じくらい安全ではありません。パスワード スペース全体をスキャンするのは、わずかに手間がかかるだけです。

本当にパスワードのセキュリティを向上させたい場合は、クライアントとサーバー間の通信に SSL を使用する必要があります (そうしないと、すべてがクリア テキストとして送信されます)。サーバーでは、PHP 5.5の新しくて洗練されたpassword_hash()関数を使用してハッシュする必要があります。 (そして、PHP 5.3.7 以降でそれを可能にする互換ライブラリがあります)。

于 2013-09-28T18:47:34.100 に答える