Security in .NET
Framework
Sergey Baidachni
MCT, MCSD, MCDBA
Overview
Introduction
Code Access Security
Add-on features in .NET
Best Practices
New Microsoft Exams
Books for reading
Introduction
Security Needs
Example (poor practices)
Best Practices
Example (try it)
“Select count(*) from UserTable
Where Login=‘”+login+ “‘ and password=‘”+
pwd+ “‘”
Login – sbad
Password – 123’456
Example (compilation error)
“Select count(*) from UserTable
Where Login=‘sbad’ and
password=‘123’456’”
Example
“Select count(*) from UserTable
Where Login=‘sbad’ and
password=‘123’ shutdown --’”
Where is your SQL Server? It would be
good if a hacker would have decided to
study only one command, and namely
that one of ”shutdown”...
Best Practices
Parameters using
SqlCommand comm=new SqlCommand(
“select count(*) from UserTable Where Login=@par1 and
password=@par2”,
conn);
comm.Parameters.Add(“@par1”,SqlDbType.VarChar,20).Value=login
comm.Parameters.Add(“@par2”,SqlDbType.VarChar,20).Value=pwd
Stored procedures using
Code Access Security
Least Privilege
Evidence
Permissions
Declarative Permissions
Imperative Permissions
Least Privilege
How much money can they
steal if you have none?
Evidence
Can you lend
me some bank
money?
I would be more
than glad, by I
am debarred
from any access
Permissions
Lend me some
bank money
I would be glad to,
but I have asked the
bank not to give me
money
Declarative Permissions
Stack Walk
Demand minimal permissions
Reject redundant permissions
[assembly:FileIOPermission(SecurityAction.RequestRefuse,
Unrestricted=true)]
Request unnecessary permissions
[assembly:FileIOPermission(SecurityAction.RequestMinimum,
Read=@”c:\a.txt”)]
[assembly:FileIOPermission(SecurityAction.RequestOptional,
Unrestricted=true)]
Caspol –resolveperm myassembly.exe
Imperative Permissions
Demand and Assert
Deny and PermitOnly
LinkDemand while using
SuppressUnmanagedCodeSecurityAttribute
Add-on features in .NET
Form-Based Authentication
Role-Based Security
Microsoft Passport
Security? Login? Password?
Authentication
You can enter, but don’t handle anything with
your hands!
Authorization
Ok, you can do it.
Form-based authentication
1
Client requests page
Access Denied
6
Not
Authenticated
Authentication
Cookie
2
IIS
Not
Authenticated
Username
Someone
Password
***********
Submit
ASP.NET Forms
Authentication
Authenticated
Authorized
4
Logon Page
(Users enter
their credentials)
3
Authenticated
Authorized
5
7
Requested
Secure Page
Form-based authentication (How?)
Modify the config file
<system.web>
<authentication mode="Forms">
<forms name=".namesuffix" loginUrl="login.aspx" />
</authentication>
</system.web>
Create method for authenticate
FormsAuthentication.Authenticate
FormsAuthentication.RedirectFromLoginPage
Role-based security
Identity and Principals
Windows Identity and Principal
General Identity and Principal
Custom Identity and Principal
Identity and Principals
Check identity of the user
Username = Fred
Check the role of the user
Role = Manager
Manager
Administrator
Identity and Principals in .NET
Framework
Identity
Windows identity (WindowsIdentity)
Generic identity (GeneralIdentity)
Custom identity (IIdentity)
Principals
Windows principal (WindowsPrincipal)
Generic principal (GeneralPrincipal)
Custom principal (IPrincipal)
Microsoft Passport
How it works
Benefits
www.passport.com
How Microsoft Passport Works
1 The client requests a page from the host
Website.msft
2 The site redirects the client to Passport.com
3 The client is redirected and logs on to
Passport.com
4 Passport returns a cookie
with the ticket
information
5 The client accesses the host,
this time with ticket
Client
information
6 The host returns a Web Form
and possibly a new cookie
that it can read and write
Passport.com
Best Practices
Strong Names
Access Modifiers
Trace Disable
Custom Error Messages
Use Register
New Microsoft Exam
70-340 – Implementing Security for
Applications with Microsoft Visual C# .NET
70-330 – Implementing Security for
Applications with Microsoft Visual Basic
.NET
Books for reading
Writing Secure Code
by Michael Howard, David LeBlanc
Designing Secure Web-Based Applications
for Microsoft Windows 2000 by Michael Howard