0

私はこの質問が何度も聞かれることを知っていますが、私は何時間もグーグルを検索して何も得られなかったと信じています。そこにあるものは何でも、それは私が使用していないMVC用です。

私の要件は単純です。asp.netで提供されているデフォルトの認証を使用したくありません。ユーザー名/パスワード/役割をカスタムSQLServerテーブルに保存します。ユーザー名/パスワード用の2つの入力と、検証するためのボタンを提供します。検証時に、彼は管理領域へのアクセスを許可されます。これは、私のサブドメイン「admin。* .com」の管理者のみが使用します。彼らはこのページを使用して、毎日Webサイトにコンテンツを追加します。

  1. どうすれば実装できますか。チュートリアルリンクで十分です。
  2. プロダクションにとって安全ですか?初心者のハッカーが私のサイトに侵入してそれを台無しにしたくありません。安全でない場合、他にどのようなオプションがありますか。

ありがとう、開発者

4

4 に答える 4

1

探している機能を備えた独自のカスタムメンバーシッププロバイダーを作成できます。asp.netメンバーシッププロバイダー

セキュリティの目的で、実証済みの方法を使用するのが最善です。ロールプロバイダーを含む任意のプロバイダーをカスタマイズしたり、独自のプロバイダーを作成したりできることを忘れないでください。

于 2012-06-19T08:07:57.463 に答える
1

ASP.NET1.1を使用してLDAP認証を行う方法の例を次に示します。私はテストしていませんが、ロジックはまだ適用可能であるか、ASP.NETの新しいバージョンに適合させることができます。

組み込みのメンバーシッププロバイダーを使用したり、独自のメンバーシッププロバイダーを実装したりしても、ハッカーがシステムにアクセスできないという保証はありません。考慮しなければならないこと:

  1. クライアントとサーバー間のデータの暗号化
  2. 暗号化されていなくても、データベースにパスワードを保存しないでください。可能であれば、各パスワードに独自のソルトをハッシュします。
  3. 強力なパスワードエントロピーを適用します。
  4. セッションCookieと認証CookieがHttpOnlyおよびSecureとマークされていることを確認してください
  5. 管理者パスワードについては、頻繁に(月に1回など)変更するポリシーがあります
  6. 誰かが自分のアカウントにサインインしたときに管理者に通知する手段を提供する
  7. 1秒あたりのリクエスト数を超え、認証に失敗したIPアドレスを一時的にロックアウトします
  8. ユーザーがy分(例:10)にx(例:10)回以上パスワードを入力すると、一時的にユーザーをロックアウトします。

これらは、探すべきほんの一握りのものです。また、セッションのハイジャック、JavaScript攻撃などについても考慮する必要があります。

それは些細なことではありません。

于 2012-06-19T08:36:46.540 に答える
1

私たちのコメントによると、ASP.Netメンバーシップ プロバイダーを実装することに抵抗があることを考えると(そして調査する価値があります-今はそうではないと感じるかもしれませんが、便利です。最初は同じように感じましたが、しかし、独自のコードとインフラストラクチャを維持するためのコストはすぐに誤った経済であることが判明します)少なくとも2つの他の選択肢があります:

1)簡単なフォーム認証

すべての管理ページを単一のフォルダー(たとえば、/ Admin)に配置し、フォーム認証を使用してこのフォルダーへのアクセスを保護します。データベースまたはWeb.Configで定義されたユーザーのみが、これらのページにアクセスできます。これはASP.Netメンバーシップよりも柔軟性がありませんが、必要なもののほとんどを提供する可能性があります。セキュリティの観点から、これはあなたのウェブサイトと同じくらい安全であり、十分にテストされ、十分に文書化されています。

2)FacebookOAuthを使用する

あなたはあなたの使用がFacebookにアクセスできると述べました。Facebookを使用して認証を行うことができます。ユーザー名とパスワードを取得することはできませんが、トークンを取得して、既知のアクセス許可セットに対して検証することができます。これは1)よりもはるかに多くの作業ですが、FacebookAPIの将来の変更の可能性につながります。ただし、十分にテストされ、安全であることからもメリットがありますが、実際のユーザー情報をほとんどまたはまったく制御できません。

余談ですが、グーグルにもっと優しくすることも検討してください!

于 2012-06-19T08:38:59.537 に答える
0

カスタム認証ハンドラーを作成することは非常に危険です。それを間違えて、あなたのウェブサイトを攻撃に対して脆弱なままにする多くの方法があります。

また、フォーム認証が非常に複雑であるという苦情も理解しています。私は同様の交差点に直面し、FSCAuthと呼ばれる独自の認証システムを構築することにしました。BSDライセンスです。非常にシンプルで、イメージできるほぼすべてのデータベース形式を使用できるように設計されています。それを設定するために行わなければならないのは、データベースに小さな4関数インターフェースを実装し、いくつかの構成フィールドに入力することだけです。

于 2012-07-03T20:39:18.413 に答える