Bài 9: Thiết kê và lập trình web với ASP.NET - Bảo mật ứng dụng web ASP.NET - Pdf 13

Thitk & Lp trình Web 2
Bài 9
BoBomtmt ngng dngdng Web ASP.NETWeb ASP.NET
Ths. TrnTh Bích Hnh
Khoa CNTT Khoa CNTT –– H.KHTNH.KHTN
© 2009 Khoa Công ngh thông tin
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
NiNi
dungdung
NiNi
dungdung
 Mts khái nimv Bomt
 Các cp đ bomt trong mt ng dng ASP.NET
 ng nhp, Qun lý thành viên, phân quyn trong
A
SP.NET
© 2009 Khoa CNTT - HKHTN
2
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
NiNi
dungdung
NiNi
dungdung
 Mts khái nimv Bomt
 Các cp đ bomt trong mt ng dng ASP.NET
 ng nhp, Qun lý thành viên, phân quyn trong
A
SP.NET
© 2009 Khoa CNTT - HKHTN
3
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET

C
p quy

n
– Qui trình quyt đnh user đãchng thc đc phép truy cp
các
tài
nguyên
nht
đnh
các
tài
nguyên
nht
đnh
– Thng cp quyndatrênLoingi dùng (role-based
authorization)
© 2009 Khoa CNTT - HKHTN
4
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
NiNi
dungdung
NiNi
dungdung
 Mts khái nimv Bomt
 Các cp đ bomt trong mt ng dng ASP.NET
 ng nhp, Qun lý thành viên, phân quyn trong
A
SP.NET
© 2009 Khoa CNTT - HKHTN

Security
 Là cp đ bomt đutiênđcthchin khi có yêu cu
đn
webpage (request)
đn
webpage

(request)
.
 Các bckimtra:
IIS
ki
t
đ
h
IP

t
ó
đ
t

à

IIS

ki
m
t
ra

i

n
g
(
n
u
c
n
)
C  g
t c
g
dù g
(
u
c
)
– Nu thành công chuyn request qua ASP.NET

N
g


cl

i thôn
g
báo cho n
g

Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
CácCác
hìnhhình
thcthc
chngchng
thcthc
trongtrong
IISIIS
CácCác
hìnhhình
thcthc
chngchng
thcthc
trongtrong
IISIIS
 Anonymous
 Basic
 Digest
 Integrated Windows Authentication
 Certificate
© 2009 Khoa CNTT - HKHTN
9
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
IIS Anonymous AuthenticationIIS Anonymous Authentication
IIS

Anonymous

AuthenticationIIS




h
&d


uc

uuser n
h
p username
&
passwor
d
– Username & password đc mã hóa và truyn qua HTTP header

Username & password
đc
kim
tra
khp
vi
tài
khon
Windows
Username

&

password

vi
hàm
hash


gi
lên
server
– Server thchin cùng x lý vi hàm hash vi password trên server
và kimtravigiátr nhn đc
© 2009 Khoa CNTT - HKHTN
11
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
IIS Integrated Windows AuthenticationIIS Integrated Windows Authentication
IIS

Integrated

Windows

AuthenticationIIS

Integrated

Windows

Authentication
 IIS chng thc user vi tài khon user trên Windows
 Khi s dng trong mng intranet, Windows Authentication
cho phép IIS quyt đnh yêu cucangi dùng davào


S dng các certificate causer đ

thchinvicchng
thc

Trong

hóa
khóa
công
khai
(public
-
key cryptography)
mt

Trong

hóa
khóa
công
khai
(public
-
key

cryptography)

mt

ASPNET
t
đng
đc
to
khi
cài
.NET Framework
Tài
khon
ASPNET

t
đng
đc
to
khi
cài
.NET

Framework
• Tài khon NETWORK SERVICE đc đnh nghasn trong
Windows Server 2003 và có quyntruycpnh tài khon
ASPNET
ASPNET
© 2009 Khoa CNTT - HKHTN
15
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
ImpersonationImpersonation
ImpersonationImpersonation

impersonation
khi
S
dng
impersonation

khi
– ng dng web davàoIIS đ chng thcuser

Server cho
p

p
host nhiu n
g
dn
g
t nhiu khách hàn
g
khác
pp
g
g
g
nhau, cung cpchomi ng dng web mttàikhon Windows
riêng bit đ ngn không cho ng dng này truy cp vào tài nguyên
ca ng dng khác
// Web.Config
<authentication mode="Windows" />
© 2009 Khoa CNTT - HKHTN

i

đ
n
h
n
h
ng r
à
ng
b
u

cc
h
op

pc
á
c
l
o
i
m
ã
l
n
h
t
rong assem

level= Medium />
</system.web>
© 2009 Khoa CNTT - HKHTN
17
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
Trust LevelsTrust Levels
Trust

LevelsTrust

Levels
 Full
Tt

NET l
đ


d
&
th
thi

Tt
c

.
NET
c
l

services
,
reflection
 Medium
– ng dng chđc phép truy xut trong cutrúcth mccanó
 Low
Rd
lliti

R
ea
d
-on
l
y app
li
ca
ti
on
 Minimal

Không
đc
phép
truy
cp
tài
nguyên
© 2009 Khoa CNTT - HKHTN
Không

nv
i
c
chng thc
 Windows
– S dng ktqu t c ch
chng thc trong cuhìnhca
IIS
 Forms
– Cho phép chng thc thông
qua
f
o
rm
đ
n
g
nh
p
qua o
đ g
p
 Passport
– S dng dch v chng thc

Mi ft P t
© 2009 Khoa CNTT - HKHTN
c

a


AuthenticationForms

Authentication
Thuc tính Ý ngha
Cookieless
Qui
đnh
vic
chng
thc
lu
trong
cookie:
Cookieless
(UseDefaultProfile)
Qui

đnh
vic
chng
thc
lu
trong
cookie:
UseCookies, UseUri (nhúng ticket trong URL), và
AutoDetect
defaultUrl

n


hóa
authentication

ticket:
All (hash & encrypte), Encryption, None, Validation
(check ticket có b sa đi)
re
q
uireSSL
(
false
)
Yêu cus dn
g
ktni SSL khi tru
y
nd liu
q
()
g
y
© 2009 Khoa CNTT - HKHTN
22
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
Forms AuthenticationForms Authentication
Forms

AuthenticationForms


timeout (30 phút) Qui đnh thi gian expire ca cookie
// Web.Config
<authentication mode="Forms" >
<forms loginUrl="Login.aspx" timeout="86400"
slidingExpiration="true“ />
© 2009 Khoa CNTT - HKHTN
23
</authentication>
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
NiNi
dungdung
NiNi
dungdung
 Mts khái nimv Bomt
 Các cp đ bomt trong mt ng dng ASP.NET
 ng nhp, Qun lý thành viên, phân quyn trong
A
SP.NET
© 2009 Khoa CNTT - HKHTN
24
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
Membership ProviderMembership Provider
Membership

ProviderMembership

Provider
 Là tpcáclpca .NET cho phép developer x lý các
chc
nng

CSDL
– Chng thcngi dùng
– Phân quynngi dùng
– Qunlýmtkhu(to, sa, reset)
 Membership Provider mc đnh là SqlMembershipProvider
– ToCSDL aspnetdb trong SQLExpress và lu trong th mc
App_Data
© 2009 Khoa CNTT - HKHTN
25
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
Role Management ProviderRole Management Provider
Role

Management

ProviderRole

Management

Provider
 Là tpcáclpca .NET cho phép developer x lý các
chc
nng
qun

cp
quyn
ngi
dùng
chc

nh là S
q
lRoleProvide
r
g


q
© 2009 Khoa CNTT - HKHTN
26
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
ASP NET Login ControlsASP NET Login Controls
ASP
.
NET

Login

ControlsASP
.
NET

Login

Controls
 CreateUserWizard
 Login
 LoginName & LoginStatus
 LoginView
 Chan

and

LoginStatusLoginStatus
ControlsControls
© 2009 Khoa CNTT - HKHTN
30
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
LoginViewLoginView
ControlControl
LoginViewLoginView
ControlControl
© 2009 Khoa CNTT - HKHTN
31
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
ChangePasswordChangePassword
ControlControl
ChangePasswordChangePassword
ControlControl
© 2009 Khoa CNTT - HKHTN
32
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
PasswordRecoveryPasswordRecovery
ControlControl
PasswordRecoveryPasswordRecovery
ControlControl
© 2009 Khoa CNTT - HKHTN
33
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
CC


hìhì
nhnh
Mail

Server

(SMTP)Mail

Server

(SMTP)
// Web.Config
<configuration>
<configuration>
<system.net>
<mailSettings>
i
i@ i
<smtp
d
el
i
veryMethod="Network" from=“yourma
i
l
@
gma
i
l.com">
<network

ma
ilS
ett
i
ngs>
</system.net>

© 2009 Khoa CNTT - HKHTN
</configuration>
35
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
XX


lyly

GG

ii
mailmail
ll

yy
ll
ii
PasswordPassword
XX


lyly

W
r
it
e
("Th
ere was a pro
bl
em sen
di
ng
th
e ema
il
.
"

+
ex
)
;
}
e.Cancel = true;
}
© 2009 Khoa CNTT - HKHTN
}
36
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
LL

yy


trongtrong
Web
.
configWeb
.
config
using System.Web.Configuration;
using
System Net Configuration
;
using

System
.
Net
.
Configuration
;
Configuration config =
WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings =
(MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");
// settings.Smtp.Network.Host
// settings.Smtp.Network.Port
// settings.Smtp.Network.Username
//
s
ettings.Smtp.Network.Passwor
d

SendMailErrorEventArgs
e)
{
e.Handled = true;
© 2009 Khoa CNTT - HKHTN
PasswordRecovery1.SuccessText = e.Exception.Message;
}
38
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
CuCu
hìnhhình
ss
dngdng
DatabaseDatabase
riêngriêng
chocho
Membership & RoleMembership & Role
CuCu
hìnhhình
ss
dngdng
Database

Database

riêngriêng
chocho
Membership

&

Membership

Bc
2:

Cu
hình
ConnectionString
,
Membership

Provider & Role Provider trong Web.Config
 Bc3: S dng Web Site Administration Tool đ cu
hình
p
hân
q
u
y
n
© 2009 Khoa CNTT - HKHTN
p
qy
– Menu > Website > ASP.NET Configuration
39
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
CuCu
hìnhhình
ss
dngdng

to
-
Configure
-
ASP
-
Net
-
Membership
-
© 2009 Khoa CNTT - HKHTN
http://www
.
codedigest
.
com/FAQ/
16
How
to
Configure
ASP
Net
Membership
Providers-to-Use-Our-Own-Database aspx
40
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
CuCu
hìnhhình
ss
dngdng

e
t

th
e connec
ti
on s
t
r
i
ng
f
or
SQL

S
erver
>
<connectionStrings>
<clear />
<add name="
SqlConn"
connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Test;"
/>
</connectionStrings
>
© 2009 Khoa CNTT - HKHTN
 http://help.maximumasp.com/SmarterTicket/Customer/KBArticle.aspx?articleid=878
41
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET

sys
t
em.we
b>
<! Configure the Sql Membership Provider >
<membership defaultProvider=“MySqlMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="
MySqlMembershipProvider"
type=
"
System Web Security SqlMembershipProvider
"
type=
System
.
Web
.
Security
.
SqlMembershipProvider

connectionStringName="SqlConn"
applicationName="/"
enablePasswordRetrieval="false"
enablePasswordReset="false"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"

Database

riêngriêng
chocho
Membership

&

RoleMembership

&

Role
 Bc 2 (tt)
<t b>
<
sys
t
em.we
b>
<! Configure the Sql Role Provider >
<roleManager enabled ="true"
defaultProvider =“
MySqlRoleProvider" >
<providers>
<clear />
<add name =“
MySqlRoleProvider"
type=
"

dngdng
Database

Database

riêngriêng
chocho
Membership

&

RoleMembership

&

Role
 Bc 3: Website Administration Tool
© 2009 Khoa CNTT - HKHTN
44
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
Membership APIMembership API
Membership

APIMembership

API
Membership.Method
CreateUser
CreateUser
DeleteUser

labError.Text = "User not found, try again";
}
G
e
tU
ser
N
ame
B
y
E
ma
il
UpdateUser
ValidateUser
© 2009 Khoa CNTT - HKHTN
45
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
MembershipUserMembershipUser
APIAPI
MembershipUserMembershipUser
APIAPI
MembershipUser.Method MembershipUser.Property
ChangePassword
Comment
ChangePassword
Comment
ChangePasswordQuestionAndAnswer CreationDate
GetPassword Email
ResetPassword IsApproved


trong
GridView
<asp:ObjectDataSource ID="odsUsers"
runat="server"
<asp:GridView ID="grdUsers“ runat="server"
DataSourceID="odsUsers"
TypeName="System.Web.Security.Membership"
SelectMethod="GetAllUsers"
DeleteMethod="DeleteUser">
<DeleteParameters>
AutoGenerateColumns="false"
AutoGenerateDeleteButton="true"
AutoGenerateSelectButton="true"
CellPadding
=
"
5
"
<asp:ControlParameter
ControlID="grdUsers" Type="string"
PropertyName="SelectedDataKey.Values[0]"
CellPadding
=
5
DataKeyNames=“UserName”>
<Columns>
<asp:BoundField HeaderText="Name"
DtFild
"

>
Date

DataField
CreationDate

/
<asp:BoundField HeaderText="Last
Login“ DataField="LastLoginDate" />
</Columns>
</
asp:GridView
>
© 2009 Khoa CNTT - HKHTN
</
asp:GridView
>
47
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
Roles APIRoles API
Roles

APIRoles

API
Roles.Method Roles.Method
AddUsersToRole
GetAllRoles
AddUsersToRole
GetAllRoles


Roles

trongtrong
CheckBoxListCheckBoxList
<asp:ObjectDataSource ID="odsRoles" runat="server"
TypeName
=
"
System Web Security Roles
"
TypeName
=
System
.
Web
.
Security
.
Roles
SelectMethod="GetAllRoles" />
Select user roles: <br/>
<asp:CheckBoxList ID="chkRoles" runat="server"
DataSourceID="
odsRoles" />
© 2009 Khoa CNTT - HKHTN
49
Thitk & Lp trình Web 2 – Bài 9: Bomt ng dng Web ASP.NET
TngTng
ktkt


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status