0

HTTP GET / POSTを介して送信する前に、クライアント側でユーザー名/パスワードをスクランブルする必要があります。そして、サーバーはデータベースをチェックする前に、Tclでそれをデコードします。

現在、クライアント側でJavaScriptを使用することを考えています。Javaアプレットも同様です。

Simple XORまたは他の方法を使用して、簡単にそれを達成できる方法はありますか?(例をいただければ幸いです)

C / Python / .NET / Javaでいくつかのサンプルを見つけましたが、JavaScriptとTclでは見つかりませんでした。

残念ながら、SSLは使用するオプションではありません。

4

2 に答える 2

1

sslがオプションでない場合は、SSLの代わりに多くのサイトで使用されている次のスキームをお勧めします。

  1. クライアント側では、ユーザー名とパスワードを組み合わせて、そこからハッシュを計算します(MD5が一般的な選択肢です)。
  2. ユーザーの名前とハッシュをサーバーに送信します
  3. サーバー側で、データベースからそのユーザーのパスワードを取得します。
  4. ユーザー名とパスワードからハッシュを計算し、クライアントのハッシュと比較します。2つが一致する場合、パスワードは一致します。
  5. セキュリティを強化するために、ユーザーとパスワードの組み合わせに少しランダムなテキストを追加します。このランダムなテキスト、別名「ソルト」は、クライアント側とサーバー側の両方で認識されている必要があります。

MD5を使用してハッシュを計算する方法に関する提案を次に示します。

package require md5

proc calculateHash {user password salt} {
    return md5:md5 -hex "$user:$salt:$password"
}

それの使い方:

set user "johnny"
set password "begood2mama"
set salt "myDog_is_meaner_than_yourDog"

set hash [calculateHash $user $password $salt]
于 2010-08-10T14:11:59.827 に答える
1

superNobody、

プレーンテキストのパスワードをデータベースに保存する代わりの方法を検討する必要があります。見る:

パスワードをJavascriptでエンコードしてから、Tclでパスワードをデコードしてデータベースと比較する代わりに、JavascriptでのSHA1ハッシュを検討し、SHA1ハッシュ値をデータベースに保存することを検討する必要があります。

javascriptでのSHA1ハッシュ関数の利用可能な例がいくつかあります(Googleの「sha1javascript」のみ)。tcllibTclライブラリはSHA1をサポートしています。

HaiVuが述べたように、単なるパスワードハッシュ以上のハッシュ/保存も検討する必要がありますが、代わりにSHA1(ユーザー名+ウェブサイト名+パスワード)のようなものを使用してください。これは、クライアントでJavascriptを使用して計算し、データベースに保存できます。

于 2010-09-10T03:30:18.027 に答える