0

I am new to website security and I need to make a registration and login system. I am not yet using https for it, how can I make my registration secure?

This is my registration form, index.php, I use ajax to pass the form values to create_account.php .

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
function submitForm() {
    $.ajax({type:'POST', url: 'create_account.php', data:$('#ContactForm').serialize(), success: function(response) {
        $('#ContactForm').find('.form_result').html(response);
    }});

    return false;
}

</script>
<form id="ContactForm" onsubmit="return submitForm();" method="POST">
   <input type="text" name="fname" value=""/> 
   <input type="text" name="lname" value="" />
   <input type="text" name="email" value="" />
   <input type="text" name="vEmail" value="" /> 
   <input type="password" name="password" value="" />
   <input type="password" name="vPassword" value="" />
   <input type="submit" name="submit" value="Submit" onclick="password.value=sha256_hash(password.value)"/>
<div class="form_result"> 

I tried onclick="password.value=sha256_hash(password.value)" but it doesn't work at all. Now I am unsure about how an attacker can get the information sent from index.php to create_account.php. Is it possible to hash (sha256/512) and salt it with javascript? In create_account.php, I am already doing this type of security.

If it is not possible, how can we set https (I know almost nothing about ssl)?

4

2 に答える 2

10

まだ https を使用していませんが、登録を安全にするにはどうすればよいですか?

HTTPS の使用を開始します。他のアプローチは狂気であり、安全ではありません。

onclick="password.value=sha256_hash(password.value)" を試しましたが、まったく機能しません。

ハッシュ化されたパスワードを送信しても、セキュリティにはほとんど貢献しません。これにより、ユーザーが使用しているパスワードを攻撃者が見つけ出すリスクが (大幅ではありませんが) 減少します (これは、パスワードを再利用するユーザーを保護するのに役立ちます)。サイトに送信して、そのユーザーとしてログインします。

ハッシュ (sha256/512) して javascript でソルトすることは可能ですか?

可能?はい。この問題を解決する手段として役立ちますか? わずかでもありません。

セキュリティが必要な場合は、SSL サポートを取得してください。

それができない場合、どうすれば https を設定できますか (私は ssl についてほとんど何も知りません)。

基本的なアプローチは次のとおりです。

  1. 証明書を購入または生成します (独自の証明書を生成すると、平均的なユーザーのブラウザーが信頼する誰かによって署名されないため、問題が発生します)
  2. 証明書を使用するようにサーバーを構成します (これを行う方法はサーバーによって異なります。Google はここであなたの友人です。Debian システムで Apache HTTPD の SSL を設定するための手順などを見つけることができます)。
于 2013-03-06T22:29:01.150 に答える
0

パスワードを送信する前にクライアント側でソルトすることはできると思いますが、セキュリティの観点からはあまり効果がありません。はい、送信中に元のパスワードがスヌープされるのを防ぎますが、ハッシュソルトがインターネット接続を持つ人に公開されるため、レインボーテーブルだけでパスワードを盗むことができます. それでもそれを選択すると仮定すると、誰かがログインしようとするたびに再ハッシュしますか? SSL証明書を使用して設定する方が良いでしょう。

SSLの設定に関しては、すぐにググって、これに出くわしました。自分でテストするだけであれば、独自の証明書を生成しても問題ありませんが、本番環境に移行する場合は、登録済みプロバイダー (verisign など) から証明書を購入する必要があります。また、使用しているホスティング プロバイダーが何であれ、テスト中でも購入したものを使用する必要がある場合があります。

繰り返しますが、共有ホスティング プロバイダーを使用している場合は、証明書のインストールについてサポートを依頼する必要がある場合があります。

于 2013-03-06T22:30:14.147 に答える