5 Stimmen

Wo im Aufrufstapel sollten Rollenprüfungen durchgeführt werden?

In meiner typischen Anwendung klickt der Benutzer auf eine Schaltfläche in einer aspx-Seite, ruft ein C#-Geschäftsobjekt auf und führt dann eine gespeicherte Prozedur aus.

Sollten Rollenprüfungen am Anfang des Stapels, am Ende des Stapels oder auf jeder Ebene durchgeführt werden? Es scheint, dass ein böswilliger Benutzer, der eine Methode aufrufen kann, jede beliebige Methode aufrufen kann. Für eine wirksame Sicherheit müsste also jede Methode überprüft werden (und das ist eine Menge zusätzlicher Code, der geschrieben werden muss).

Hier ist ein typischer Aufrufstapel zur Veranschaulichung meiner Frage:

Page_Load()
{
  if(p.IsInRole("Managers"))  //or equivalent attribute
  {
    AddAccount.Visible =true;
  }
}

AddAccount_OnClick()
{
  if(p.IsInRole("Managers"))  //or equivalent attribute
  {
    //Add the account
    Account.Add(...);  //and maybe another role check...
  }
}

-- TSQL doesn't understand .NET authorization, this call is in a 'trusted' subsystem
create proc Add_Account @user, @account_name
If @user in (Select user from role_table where role='manager')
-- Add the account

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X