2012-01-20 14 views

答えて

3

ASP.NETフォーム認証は実証済みのテクノロジなので、Authorize属性はOKです。しかし、あなたのために生成されたスケルトンASP.NET MVCアプリケーションについて尋ねられて以来、それには欠陥があります。たとえば、アカウントコントローラのLogOnメソッドは、[RequireHttps]属性で修飾されていません。つまり、非セキュアチャネルを介してアクセスできます。 ReturnUrlパラメータが実際に同じドメインに属していたURLであることを確認しなかった認証方法にはもう1つの欠陥がありました。これは、ASP.NET MVC 3ツールアップデートで修正されました。

web.configにおける認証部における他の不備もあります

ここ
<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

requireSSL属性は認証Cookieが非セキュアなチャネルを介して送信することができることを意味trueに設定されていませんが。 slidingExpirationプロパティもfalseに設定されていないため、リクエストごとにクッキーが自動的に更新されます。私はあなたにfollowing guideを見てお勧めします。

+0

サイトがhttpsで実行されていない場合、requiressl属性またはrequirehttpsは影響を与えますか? httpで動作させる場合、サイトは安全ではありませんか? –

+0

@ TravisJ、もちろんそれは効果があるでしょう。 HTTPでサイトを実行していて、requireSSLプロパティをtrueに設定した場合、ブラウザは認証されていないチャネルを介してサーバーに認証Cookieを送信しないため、認証できなくなります。これはセキュリティが強化されるため、良いことです。あなたのアカウントコントローラで '[RequireHttps]'属性を使うと、すべてのHTTPリクエストを強制的にHTTPSにリダイレクトします。 –

+0

ダーリンの入力をありがとう、私はそれを感謝します。 –

関連する問題