1 / 48

ASP.NET 4.0 biztonság

ASP.NET 4.0 biztonság. Krizsán Zoltán. Hitelesítés fajtái. Támogatott (ezek közül csak 1 lehet): Windows ( default ) Basic Integrated Digest . NET Passport (MSN, Hotmail) sdk-t kell letölteni hozzá regisztrálni kell a Microsoft-nál fizetni kell érte Forms

yuli-hays
Download Presentation

ASP.NET 4.0 biztonság

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ASP.NET 4.0biztonság Krizsán Zoltán

  2. Hitelesítés fajtái Támogatott (ezek közül csak 1 lehet): • Windows (default) • Basic • Integrated • Digest • .NET Passport (MSN, Hotmail) • sdk-t kell letölteni hozzá • regisztrálni kell a Microsoft-nál • fizetni kell érte • Forms • süti kell hozzá (tikosított a javasolt) • Megfelelő táblák kellenek hozzá (aspnet_regsql.exe)

  3. Hitelesítés, hozzáférés

  4. URL Hozzáférés szabályozás <authorization> <allowusers="comma-separated list of users" roles="comma-separated list of roles" verbs="comma-separated list of verbs"/> <denyusers="comma-separated list of users" roles="comma-separated list of roles" verbs="comma-separated list of verbs"/> </authorization> ? : anonymous *: bármelyik hitelesített user Verbs: HTTP kérés típusa (GET, POST, HEAD, or DEBUG).

  5. URL Hozzáférés szabályozás II • Minden mappában lehet. • Machine.config-ban is van • Fájlokra is lehet<location path="SecuredPage.aspx"> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location>

  6. Szerepek - roles • Csoportok valójában • Személyek a csoportba • Hozzáférés csoportnak.

  7. Fájl szintű hozzáférés szabályozás • Windows hitelesítés esetén • FileAuthorizationModule végzi • Az oprendszer ellenőrzi az adott user jogban futó webapp jogosultságát.

  8. Hitelesítés beállítása • web.configxml-ben • mode, ami lehet: None, Windows, Forms, Passport • modulok végzik <?xmlversion=”1.0”?> <configuration> <system.web> <authenticationmode=”Forms” /> </system.web> </configuration>

  9. Form alapú hitelesítés • Szerver oldali vezérlőkkel támogatott (wizard-ok) <authenticationmode="Forms"> <formsloginUrl="~/Account/Login.aspx"timeout="2880" /> </authentication>

  10. Biztonságos form alapú • SSL jól jönne, • Állítsunk be titkosítást (3DES) <authenticationmode="Forms"> <formsloginUrl="Login.aspx" protection="Encryption"/> </authentication>

  11. Tipikus forms titkosítás xml <system.web> <authenticationmode="Forms"> <formsloginUrl="login.aspx"/> </authentication> <authorization> <denyusers="?"/> </authorization> </system.web>

  12. Saját hitelesítés

  13. Struktúra

  14. Hitelesítő vezérlők

  15. Hitelesítő vezérlők II

  16. Login vezérlő <asp:LoginID="Login1"runat="server” /> • ConverttoTemplate (Visual Studio)

  17. Login vezérlő eseményei • AuthenticateFires when a user is authenticated. • LoggedInFires when the user logs in to the site after a successful authentication. • LoggingInFires when a user submits login information but before the authentication takesplace. At this time, the operation can still be canceled. • LoginErrorFires when a login error is detected.

  18. LoginName, LoginStatusvezérlők <table width="100%" border="0"><tr><td><asp:loginname ID="Loginname1" runat="server" FormatString="Welcome, {0}"/></td><td align="right"><asp:loginstatus ID="Loginstatus1" runat="server" LogoutText="Log off" /></td></tr></table>

  19. LoginStatus vezérlő • <asp:LoginStatusID="LoginStatus1"runat="server" • LoginText="Sign In" • LogoutText="Sign Out" • LogoutPageUrl="./Default.aspx" • LogoutAction="Redirect"/>

  20. LoginView vezérlő <asp:LoginViewID="LoginViewCtrl"runat="server"><AnonymousTemplate><h2>You are anonymous</h2></AnonymousTemplate><LoggedInTemplate><h2>You are logged in</h2>Submit your comment: <asp:TextBoxrunat="server"ID="CommentText"/><br/><asp:Buttonrunat="server"ID="SubmitCommentAction"Text="Submit"/></LoggedInTemplate></asp:LoginView>

  21. MemberShip API • Létrehozni / törölni felhasználókat (web config mellé) • jelszó resetelés (email küldéssel) • jelszó generálás (email küldéssel) • felhasználók listázása / keresése • provider független módon (config file)

  22. MemberShipAPI használata • Állítsuk be a form hitelesítést, tiltsuk a névtelen hozzáférést. • Hozzuk létre az adatokat tároló struktúrákat (sql esetén táblák). Ha a gépen van SQL Server Express, akkor majd létrehozza nekünk a rendszer. (App_Data/ASPNETDB.MDF) • Állítsuk be a connectionString-et, és a membership szolgáltatót. Az alap a SqlMembershipProvider. • Vegyük fel a felhasználókat. • Készítsük el a bejelentkező felületet.

  23. Felhasználók beolvasása <asp:GridViewID="UsersGridView"runat="server”DataKeyNames="UserName” MembershipUserCollection _MyUsers; protectedvoidPage_Load(xxx){ _MyUsers = Membership.GetAllUsers(); UsersGridView.DataSource = _MyUsers; if (!this.IsPostBack){ UsersGridView.DataBind();}}

  24. Felhasználó módosítás protectedvoidActionUpdateUser_Click(object sender, EventArgs e){ if (UsersGridView.SelectedIndex >= 0){ MembershipUser Current = _MyUsers[(string)UsersGridView.SelectedValue]; Current.Email = EmailText.Text; Current.Comment = CommentTextBox.Text; Current.IsApproved = IsApprovedCheck.Checked; Membership.UpdateUser(Current); // Refresh the GridView UsersGridView.DataBind(); } }

  25. Felhasználó felvitele MembershipCreateStatusStatus; Membership.CreateUser(UserNameText.Text, PasswordText.Text, UserEmailText.Text, PwdQuestionText.Text, PwdAnswerText.Text, true, out Status);

  26. Felhasználó törlése • Membership.DeleteUser("userName");

  27. MS SQL támogatás létrehozása • aspnet_regsql.exe –A / -R • all: All features • m: Membership • r: Role manager • p: Profiles • c: Personalization • w: SQL Web event provider

  28. Ha minden jól ment …

  29. Lefuttatott sqlszkriptekWindows\Microsoft.NET\Framework\v4.0.30319 • InstallCommon.sqlInstallMembership.sqlInstallPersistSqlState.sqlInstallPersonalization.sqlInstallProfile.SQLInstallRoles.sqlInstallSqlState.sqlInstallSqlStateTemplate.sqlInstallWebEventSqlProvider.sqlUninstallCommon.sqlUninstallMembership.sqlUninstallPersistSqlState.sqlUninstallPersonalization.sqlUnInstallProfile.SQLUninstallRoles.sqlUninstallSqlState.sqlUninstallSqlStateTemplate.sqlUninstallWebEventSqlProvider.sql

  30. Biztonság szerkesztése webes felületről

  31. Grafikusan webes felület hívása Visual Studio alól

  32. Web Site AdministrationTool

  33. Saját login protectedvoidLoginAction_Click(object sender, EventArgs e) {Page.Validate();if (!Page.IsValid) return;if (FormsAuthentication.Authenticate(UsernameText.Text, PasswordText.Text)){FormsAuthentication.RedirectFromLoginPage(UsernameText.Text, false); }else{LegendStatus.Text= "Invalid username or password!"; }}

  34. Login MembershipAPI-val if (Membership.ValidateUser(UsernameText.Text, PasswordText.Text)) { FormsAuthentication.RedirectFromLoginPage(UsernameText.Text, false); }else {LegendStatus.Text= "Invalid user name or password!";}

  35. Login saját metodikával protectedvoidLoginCtrl_Authenticate(object sender, AuthenticateEventArgs e){ if(ellenorzes(LoginCtrl.UserName, LoginCtrl.Password)){ e.Authenticated = true; }else{ e.Authenticated = false;} }

  36. Saját kijelentkezés FormsAuthentication.SignOut(); FormsAuthentication.RedirectToLoginPage();

  37. Windows hitelesítés folyamata I

  38. Windows hitelesítés folyamata II

  39. Tulajdonságok • Nem kell kódot írni, • Jelszavak kezelése a rendszergazda dolga • Más technológiákkal együttműködés (WCF, WS, Sharepoint, …) • Nem szabható testre. • IIS beállítása szükséges. • Korlátozott kliensek integrated, vagy Digest esetén (csak IE és windows) • Nem lehet menedzselni a usereket.

  40. Windows hitelesítés fajtái • Basic – sima szövegben • Minden böngésző tudja. • Adatok kódoltak, de nem titkosítottak. • Digest – adatok hash-ei • 401-es kód megy és nonce érték • Kliens a nonce segítségével hash kódot készít • Csak IE 5 fölött • Integrated • A felhasználó nem veszi észre (transzparens) • Adott user adatait küldi a böngésző (IE) • Csak LAN (AD)

  41. Windows hitelesítésparaméterek lekérdezése if (Request.IsAuthenticated) { lblInfo.Text= "<b>Name: </b>" + User.Identity.Name; lblInfo.Text += "<br><b>Authenticated With: </b>"; lblInfo.Text += User.Identity.AuthenticationType; }

  42. A felhasználó adott csoportban van? if (Request.IsAuthenticated) { lblInfo.Text = "<b>Name: </b>" + User.Identity.Name; if (User isWindowsPrincipal) { WindowsPrincipal principal = (WindowsPrincipal)User; lblInfo.Text += "<br><b>Power user? </b>"; lblInfo.Text += principal.IsInRole( WindowsBuiltInRole.PowerUser).ToString(); } }

  43. Alapvető felh. kategóriák lekérdezése if (Request.IsAuthenticated){ lblInfo.Text = "<b>Name: </b>" + User.Identity.Name; WindowsIdentity identity = (WindowsIdentity)User.Identity; lblInfo.Text+= identity.Token.ToString(); lblInfo.Text+= identity.IsGuest.ToString(); lblInfo.Text+= identity.IsSystem.ToString(); } }

  44. Megszemélyesítés <configuration> <system.web> <identityimpersonate="true"/> </system.web> </configuration>

  45. Hozzáférés szabályozás kódból Csoporttagság ellenőrzés • Minden hitelesítésnél működik • Benne van e felhasználó a csoportban if(User.IsInRole(”Fonok")) { // akciók }

  46. Hozzáférés szabályozás kódból PrincipalPermission példánnyal • PrincipalPermission létrehozása. • PrincipalPermission.Demand() hívása. • Kivétel elkapása, ha nincs elegendő jog. • Összefűzhető PrincipalPermissionpp3 = (PrincipalPermission)pp1.Union(pp2);pp3.Demand();

  47. Hozzáférés szabályozás kódból Deklaratív ellenőrzés [PrincipalPermission(SecurityAction.Demand,Role= @"BUILTIN\Administrators")] publicpartialclass_Default : System.Web.UI.Page

  48. Hozzáférés szabályozás kódból PrincipalPermission példánnyal try { PrincipalPermissionpp = newPrincipalPermission(null, @"BUILTIN\Administrators"); pp.Demand(); // kényes műveletek } catch(SecurityException err) { // nincs elég jog }

More Related