2011-10-17 7 views
0

これは一般的な「良いアイデア/悪いアイデアの質問」の一種です。ID(チケットID、ケースIDなど)をHTMLに保存する考え方

私のシナリオ:私はわずか1ページ(1つのビュー/コントローラ)であるASP.NET MVC3アプリケーションを書いています。このビューでは、「ケース」のグリッドを表示し、ユーザーがこれらのケースのいずれかをクリックしたときに、私は、ページの可視部分を交換し、このケース(の詳細をロードするためにjqueryのAJAX($.ajax)を使用しますが、ページを決して変更しないでください)。

まだ私と一緒ですか?ありがとう!この新しいケース詳細ビューが表示されたら

今、ユーザーは多くの方法のいずれかでケースを編集することができます。優先度を変更したり、ステータスを変更したりしてください。jqueryのajax関数も使用しています。

私の質問ケースIDはどのように保存する必要がありますか?それをHTMLに保存してもよろしいですか?それを保存する場所はありますか?

にGUID IDを持っており、現在はケース詳細は(AJAXを使用して)ロードされたときに、私はので、私はケースを知っケース詳細ビュー<div>にカスタム属性を追加のすべてのケースID。つまり、ケースのIDがページソースを参照しているすべてのユーザーに表示されます。私はjQueryの.data()関数を使ってそれを保存することを考えましたが、これはページソースからは見えませんが、Firebugの他のインスペクタツールからアクセスできます。

このためのベストプラクティスは何ですか? ケース IDで私のユーザーが何をしているのか本当に想像できませんが、ここでは少し編集的になりたいと思っています。

ありがとうございました!そして、この小説を読んでくれてありがとう!

答えて

2

DOMのコードとデータがユーザから保護されていないため、ブラウザがどのように見えるかはほとんどありません。

明らかに、その情報を見ることが許可されていないユーザーには何も送信しないため、ユーザーの役割に依存するデータのクライアント側のフィルタ処理は実行したくありません。

内部データの場合、境界線を保護する必要があります。メソッドが一致しないID(つまり、異なる顧客にのみ有効なアカウントID)を受け入れることはできませんが、 ids自体については

+0

私は、これらのIDをユーザーに公開せずに取得する「魔法の」方法はないと考えていましたが、他のスマートなプログラマーが何を思いついたのかを見てみたいと思います。私は入力を感謝します。 – MattW

1

サーバーからブラウザにケースIDを送信することで、そのユーザーにケースIDを渡しています。ユーザーにケースIDを持たせたくない場合は、ブラウザに送信しないでください。

+0

ありがとうございます。私は入力を感謝します。どのようなケースが更新されているかを知る良い方法は何でしょうか?多分他のIDを作ったのだろうか?私は決してページを変更しないので、私は実際にコントローラでそれを行うことはできません。自分のコントローラーに優先度/ステータスを変更するケースを伝えるJavaScriptが必要です。ありがとうございます。 – MattW

1

あなたが懸念しているのであれば、私はある種の消毒された「架空の」IDを提供します。これがループで実行されていた場合は、ループインデックスを基にすることをお勧めします。

しかし、最終的には、データベースへのajax呼び出しでそれを識別する一意の識別子をケースで使用する必要があります。

これまでと同じことをやったことがありますが、マークアップでIDフィールドをエンコードしているだけで、まれに重要です。このIDは、あなたのセキュリティが落ち着いていれば開いているだけで有害なものです。あなたのデータベースを保護し、アプリケーション上で適切なレベルのセキュリティを持っているなら、あなたは大丈夫でしょう。もしあなたがいなければ、マークアップよりも心配するべきことがあります。

関連する問題