2

Request.QueryStringあまり安全ではありません。誰かがログインしている場合。URLを入力するだけです。

myaccount.aspx?custId=10

別の顧客の情報を取得できます。

したがって、それはまったく安全ではありません。これを投稿する理由は、ページ間でcustomerIdを渡す別の方法が必要だったためです。おそらくそれを暗号化しますか?

4

7 に答える 7

2

クエリ文字列は安全であり、欠陥はありません

欠陥があり安全でないのは、ユーザー入力データを信頼することです。サーバーに送信されるデータが悪意のあるものではなく、要求されたアクションがログインしたユーザーに許可されていることを確認するのはユーザーの責任です。

そのクエリ攪拌値を取得し、それが有効なタイプ(例は整数のように見える)であることを確認してから、顧客のデータをフェッチする前に、ユーザーがその顧客のデータにアクセスできることを確認する必要があります。

于 2011-04-13T19:24:51.780 に答える
2

本当に myaccount.aspx の場合、ユーザーが ID をパラメーターとして渡す必要はありません。

他の人が言ったように、メンバーシップを使用してください。または、ユーザーの ID とパスワードのハッシュ (暗号化された値) を作成し、それを Cookie として、またはセッション オブジェクトに保存します。入力パラメーターの代わりにそれを読み取ることができます。

于 2011-04-13T20:47:42.493 に答える
1

それはの責任ではありませんQueryString。できればとを使用して、認証および承認システムを実装する必要MembershipProviderがありますRolesProvider

于 2011-04-13T19:23:17.983 に答える
1

それはそれがすることになっていることをします。あなたのサイトを保護するのはあなた次第です。クエリ文字列のすべてが機密アクセス関連の機能に使用されているとは誰も言いませんでした。

于 2011-04-13T19:24:48.303 に答える
1

それを安全に渡す方法はありません。ユーザーがログインしたら、IDをセッションまたは同等のものに保存し、常にそこから取得します。

于 2011-04-13T19:26:06.677 に答える
1

asp.netのメンバーシップを確認できます

于 2011-04-13T19:26:11.030 に答える
0

ASP.NETセキュリティを使用して顧客を認証および承認し、ログインしたユーザーがクエリ文字列で指定された顧客IDにアクセスできるかどうかを確認する必要があります。

于 2011-04-13T19:22:38.450 に答える