1

私は理解できないようなWCFサービスへの呼び出しに関するセキュリティコンセプトがあります。サービスコールを保護するSilverlightとWCF RIA。何か不足していますか?

Silverlightソリューションのサンプルを作成し、WCF RIAを有効にしました。
私は呼び出し操作(またはそのことについては、自動生成されたCRUDのいずれか)私は[RequiresAuthentication()]で注釈を付けましたが、持っている:

[RequiresAuthentication()] 
[Invoke] 
public void DeleteResource(string id) 
{ 
    //... 
} 

次へ]を、私は、フォームを有効にするには、web.configファイルを変更しました認証:

<system.web> 
    <httpModules>...</httpModules> 
    <compilation>...</compilation> 
    <authentication mode="Forms" />  
</system.web> 

認証されたユーザーだけがこのメソッドを呼び出すことができます。したがって、クライアントで認証する必要があります。

FormsAuthentication auth = new FormsAuthentication(); 
auth.Login(textBoxUsername.Text, textBoxPassword.Text); 

ログインが成功すると、メソッドが呼び出されます。

このプロセスを通じてフィドラーを見たとき、私は二つのことがわかります。

  1. のSet-Cookie:.ASPXAUTH = F8FFB8B .....(ログインステップから)
  2. http://localhost:1107/.../DomainService.svc/binary/DeleteResource(メソッドを再ように私のアプリに

    1. ログイン:)

    と呼ばれているので、有害なユーザーは、次の操作を行うことができますgular user(彼は登録して資格を持っています)。

  3. アプリを操作している間にFiddlerを開き、先ほど説明したCookieとURLをコピーします。
  4. Cookieを使用してそのURLへのHTTP呼び出しを作成し(例:C#Webclientを使用)、リソースの削除を開始します。

これが可能であれば、どうすればこのセキュリティホールをブロックできますか?
もしそうでなければ、ユーザーはそれを何の妨げにしていますか?

答えて

0

私はここにセキュリティホールが表示されていない正直に言うと:

  1. をユーザーがログインすることができたならば、彼はある - 私は仮定として - 上記の操作を実行する権限。
  2. 認証!=認証。ユーザーが認証されているかどうかだけでなく、(サービス側の)単一の操作を実行する権限があるかどうかを確認する必要があります。 セキュリティの観点からは、ブラウザからの呼び出し操作と "手動で"準備された要求を使用することの間に違いはないはずです - 認証はすべての呼び出しでサービスレベルで実行する必要があります(クライアントを信頼する必要はありませんあなたがこの質問を投稿した理由)。ユーザーが許可されていないものを試してみると、認証エラーが発生するはずです。
  3. 認証Cookieの認証の有効期限が30分に設定されている必要があります。
関連する問題