2012-02-27 10 views
2

私はこの質問を私の心に持っています。 私は自分のために適切な答えを得るためにあなたとフェローを共有し、そこに誰かを助けるかもしれないと思った。私たちは、クライアント側のidフィールドを使用する必要がクライアントに送信する前に、テーブルのID列を暗号化/ハッシュ化する必要があります。

id, name, email and password 

多くの時間を:

ので、引数のために、我々は次の列を持つ当社のウェブサイトのためのユーザーテーブルを持っていると仮定することができます。 ユーザーがプロフィールを編集できるようにAJAXを実装しているとします。

<div> 
    <div> 
     <label>Name: <input type = "text" name = "txtName" id = "txtName"/></label> 
    </div> 
    <div> 
     <label>Email: <input type = "text" name = "txtEmail" id = "txtEmail"/></label> 
    </div> 
    <div> 
     <label>Password: <input type = "password" name = "txtPasswd" id = "txtPasswd"/></label> 
    </div> 
    <div> 
     <input type = "submit" name = "updateProfile" value = "Save" /> 
     <input type = "hidden" name = "id" value = "1" /> 
    </div> 
</div> 

質問にではなく、テーブルのデザイン、HTMLやCSSのものから生じ得る欠陥を指摘あなたの焦点を保管してください: とプロファイル編集ページには次のようになります。

よろしく、

+0

ユーザーがIDを知っているか、他のIDを推測することがどれほど危険なのかによって異なります。 IDを「1」から「2」に変更して別のユーザーのプロファイルを上書きすることができれば、セキュリティに深刻な問題があります。それでも、人々はランダムなIDを使って外の世界に奉仕したいのです –

+0

私はハッシュ(ランダム32文字)とIDをユーザに持っています。私はそのIDを内部的に外部通信に使用します。 –

+0

@ダゴン私はあなたのコミュニティに参加してフォームを見て、他のユーザーの詳細を簡単に変更できるので、悪い考えです。 –

答えて

1

セッションでユーザーの種類をよく保つ必要があります。

ユーザータイプによって、ユーザーの種類に応じてアクセス権/編集/更新/表示権限を確認する必要があります。

ユーザーにIDを表示すると、ユーザーの種類に許可されていない操作をユーザーにリダイレクトまたはプロンプトすることで権限チェックコードが克服されるため、データベースの列値を明らかにする手段がありません。

idsの暗号化値を使用すると、もう一度ユーザーが卑劣な目的のために暗号化値をコピーして使用することができます。

1

たレコードを編集することが許可されたユーザへのように私は、サーバー上の認証ルールのセットに依存するであろう。レコードIDをクライアントに表示することは、本当に意味がありません。

0

危険なことは、データを処理するスクリプトにあります。 初心者のハッカーとしても、私はこのIDを変更することができますし、スクリプトは 他の人の詳細を変更する可能性があります。

Therfore、あなたがCookiesまたはSessions

+0

あなたのクッキーまたはsessionIdクッキーにハッシュ/チェックサムを追加しない限り、「ハッカー」は簡単にそれを変更することもできます。 – dstarh

+0

そうです。 md5またはパスワードの別のハッシュ関数、ユーザーのID、さらにはセッションのIDを使用する必要があります。 –

1

を使用する必要があります 、編集するユーザーを知るための方法として、IDを使用しないでください私はあなたのユーザーIDを暗号化する必要はないと思いますが、あなたはすべき他のデータをチェックしてください。新しいアイデアを変更する前に、ユーザーの古いパスワードを確認することをお勧めします。これは、開いているアカウントに遭遇した誰かがそれを変更することを防止します。もう1つの良い方法は、ユーザーがログインしていること(セッションなど)を確認し、IDがログインしているユーザーのIDと一致することを確認することです。

これは私にこの質問のまわりで別の方法をもたらします。idをまったく使用しないでください。セッションに便利な状態にしておくと、フォームの中にそれを渡す必要はありません。つまり、あなたがログインしているIDでのみ行うことができ、自分のIDが何であるか分からないことがあります。

関連する問題