私はイントラウェブを使用しており、パラメーターを渡すための 3 つのオプションがあります。
?
URL でパラメータを使用する- 非表示フィールドの使用
- クッキーの使用
私のコードに関する限り、私がどのオプションを選択するかは問題ではなく、フレームワークは私をそこから抽象化します。
しかし、どちらがユーザーによる改ざんに対してより安全ですか?
私はイントラウェブを使用しており、パラメーターを渡すための 3 つのオプションがあります。
?
URL でパラメータを使用する私のコードに関する限り、私がどのオプションを選択するかは問題ではなく、フレームワークは私をそこから抽象化します。
しかし、どちらがユーザーによる改ざんに対してより安全ですか?
URL パラメーターでデータを渡すと、URL の長さ制限を超えるリスクがあり、ブックマークに干渉する (または機能になる!) 可能性があります。Cookie として渡すと、ユーザーが Cookie をオフにしている (またはクライアントが Cookie をサポートしていない) リスクがあります。隠しフィールドとして渡すのが最も移植性があります。
メソッド自体は、どのレベルのセキュリティも提供しません。
EDIT:ランスが指摘した優れた記事の1つの提案は、機密データをサーバーに保存し、Cookieのみをクライアントに送信することです。これはCookieという用語の別の使い方であり、より適切にはsession idと呼ぶべきです。これは、検討している 3 つの方法のいずれかを使用して、サーバーとクライアントの間でやり取りできます。
それらはすべて、自由に利用できるツールを使用して簡単に複製/変更できるため、アプリケーションに最適な方を使用することをお勧めします-セキュリティの点では同等であり、どれも信頼すべきではありません.
サーバー側で発行された暗号ハッシュを使用して、どのオプションを選択しても改ざんを防ぐことを検討してください。
セキュリティの観点から、それらはすべてサーバー上で同じように扱われるべきです。変数が GET ではなくピジョン転送を介して渡されるからといって、それが安全であるとは限りません。それはまだ邪悪なユーザーから来ています。
そのため、それらすべてにまったく同じ安全メカニズムを使用していることを確認してください。
それらのどれも安全ではありません (ただし、正確にどのような種類のセキュリティを意味するかは明確ではありません)。
もちろん、明らかな違いの 1 つは、url パラメーターが常に表示されることです。ユーザーがブックマークを作成したり、誰かに URL を送信したりすると、パラメーターも一緒に表示されます。
すでに述べたことに加えて、URL にパラメーターがある場合、ユーザーはブックマークを作成できます - http://bikes.com/catalog.aspx?category=downill [実際のアドレスではありません]。そのため、場合によっては、他の 2 つのオプションよりも優れている可能性があります。