質問
以前の仕事では、ASP.NET への移行を誰も望んでいない古典的な ASP アプリケーションがありました。やったことは、とてもうまくいきました。
ただし、ASP.NET に最適と思われる追加する必要のある新機能がいくつかありました。システムを ASP と ASP.NET の奇妙なハイブリッドにすることが決定されました。
私たちの最大の問題点はセッション管理でした。そして、フォーム変数を通じてセッション値を渡すためのソリューションを一緒にハックしました。私は、Cookie を通じて同じ問題に対処した他の人たちと話をしました。
どちらの方法も (非常に安全でないことに加えて) 恐ろしい難題のように思えます。
もっと良い、またはよりクリーンな方法はあるのでしょうか、それともそもそもこれは非常に悪い考えであり、このテーマに関する議論は無意味なのでしょうか?
解決
セッション データをサーバーサイド データ ストアに永続化することはできませんか?つまり、XML ファイル、データベースなどです。その後、ハッシュ (セッションを安全に識別するいくつかの基準に基づいて計算されたもの) だけを .NET ページに渡すことができ、この識別子を使用してデータ ストアからデータを取得し、セッション データを設定できます。各アプリで最新のセッション データが利用可能であることを確認するために、毎回プロキシを介して ASP から ASP.NET にリクエストを渡す必要があることは依然として意味しますが、これを実現する代替方法はわかりません。
他のヒント
私も同じ問題に対処しなければなりませんでした。私の場合、キーを Cookie に暗号化し、その他の情報にはデータベースを使用しました。.NET で暗号化を記述し、ASP 側で ID を復号化するために相互運用しました。ASP が .NET と同じ文字列を取得しないという点で、base-64 文字列の処理には奇妙な点があります。そのため、私と同じようにして、base-64 文字列を 16 進数または同様の最小公倍数に書き換える必要があるかもしれません。戦術。これは比較的安全です (XSS 攻撃を回避します)。
まあ、最終的には ASP アプリを .NET に変換するのが最善のアイデアでしょう。おそらくそれは言うまでもないと思いますが。セキュリティが大きな懸念事項である場合は、対称暗号化やハッシュ化など、セッション情報の暗号化と整合性の維持に関して、セッション情報の安全性を高めるために実行できる手順があります。
一般的な場合にこれを行うためのよりクリーンな方法を私は知りません。しかし、システム間でどのような状態を共有する必要があるかをより具体的に説明できるでしょうか?特定のケースでは、よりクリーンな解決策があるかもしれません。セッション オブジェクトの状態は、状態を維持する最良の方法であるとは限りません。