
Programming .NET Security
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Content
- Intro
- Table of Contents
- Preface
- How This Book Is Organized
- Part I: Fundamentals
- Part II: .NET Security
- Part III: .NET Cryptography
- Part IV: .NET Applications Frameworks
- Part V: API Quick Reference
- Who Should Read This Book
- Assumptions This Book Makes
- Conventions Used in This Book
- How to Contact Us
- Part I
- Security Fundamentals
- The Need for Security
- Roles in Security
- The Business Sponsor
- The Architect
- The Programmer
- The Security Tester
- The System Administrator
- The User
- The Hacker/Cracker
- Understanding Software Security
- Restricted Resources
- Trust
- Secrets
- The lifetime of secrets
- Protecting secrets
- End-to-End Security
- Real-World Trust Relationships
- Side Channels
- Physical Security
- Third-Party Software
- Assemblies
- Assemblies Explained
- Creating Assemblies
- Creating a Single-File Assembly
- Creating a Multifile Assembly
- Shared Assemblies
- Strong Names
- Creating a Key Pair
- Creating an Assembly Strong Name
- Specifying the version and culture metadata
- Specifying the key pair
- Creating the strong name
- Creating a strong name for a multifile assembly
- Delayed Signing
- Verifying a Strong Name
- Publisher Certificates
- Using the Global Assembly Cache
- Decompiling Explained
- Decompiling Assemblies
- Protecting Against Decompilation
- Obfuscation
- Native compilation
- Application Domains
- Application Domains Explained
- Application Isolation in the .NET Framework
- Application Domain and Assembly Management
- Assembly Isolation with Application Domains
- Application Domains and Runtime Security
- Assembly evidence and identity
- Application domain evidence and identity
- Application domains and security policy
- Role-based security
- Application domains and isolated storage
- Application Domains and Application Configuration
- The Lifetime of a Secure Application
- Designing a Secure .NET Application
- Identifying Restricted Resources
- Identifying Trust
- Identifying Secrets
- Failing Gracefully
- Developing a Secure .NET Application
- Security Testing a .NET Application
- Deploying a .NET Application
- Executing a .NET Application
- Monitoring a .NET Application
- Part II
- Introduction to Runtime Security
- Runtime Security Explained
- Running Unverifiable and Native Code
- Introducing Role-Based Security
- Introducing Code-Access Security
- Evidence, Security Policy, and Permissions
- Windows Security and Code-Access Security
- Introducing Isolated Storage
- Evidence and Code Identity
- Evidence Explained
- Sources and Types of Evidence
- Host evidence
- Assembly evidence
- Programming Evidence
- Introduction to Evidence Programming
- Using the Evidence Class
- Using the Standard Evidence Classes
- The ApplicationDirectory class
- The Hash class
- The Publisher class
- The Site class
- The StrongName class
- The Url class
- The Zone class
- Viewing Evidence
- Assigning Evidence to Assemblies
- Assigning Evidence to Application Domains
- Extending the .NET Framework
- Creating Custom Evidence
- Defining the Author evidence class
- Using the SecurityElement Class
- Building the Author evidence class
- Using Custom Evidence
- Making the Author assembly a fully trusted assembly
- Serializing evidence
- Embedding evidence in an assembly
- The Next Steps in Customization
- Permissions
- Permissions Explained
- Granting Permissions
- Requesting Permissions
- Permission Types
- Code-access permissions
- Identity permissions
- Enforcing Code-Access Security
- Stack walks explained
- Programming Code-Access Security
- Security Statement Syntax
- Imperative security statements
- Declarative security statements
- Programming Permissions
- Common permission class functionality
- Using the SecurityPermission class
- Programming Permission Sets
- Programming Permission Requests
- Requesting minimum permission
- Requesting optional permissions
- Refusing permissions
- Programming Permission Demands
- Demand
- LinkDemands
- Inheritance demands
- Manipulating Stack Walks
- Assert
- Deny
- PermitOnly
- Reverting overrides
- Extending the .NET Framework
- Creating Custom Code-Access Permissions
- Designing the RadioPermission class
- Defining imports and assembly scope attributes
- Defining the RadioAction enumeration
- Defining the RadioPermission class
- Implementing the IUnrestrictedPermission interface
- Implementing the IPermission interface
- Implementing the ISecurityEncodable interface
- Defining the RadioPermissionAttribute class
- Building the Radio.dll library
- Using RadioPermission to enforce security
- Security Policy
- Security Policy Explained
- Security Policy Levels
- Code groups
- Named permission sets
- Fully trusted assemblies
- Policy Resolution
- Code group attributes
- Configuring Security Policy
- Programming Security Policy
- Programming Code Groups
- Programming membership conditions
- Programming policy statements
- Creating code groups
- Programming Policy Levels
- Managing fully trusted assemblies
- Managing named permission sets
- Managing the code group tree
- Programming the Security Manager
- Programming Application Domain Policy
- Extending the .NET Framework
- Custom Membership Conditions Explained
- Defining the AuthorMembershipCondition Class
- Building the AuthorMembershipCondition Assembly
- Using the AuthorMembershipCondition Membership Condition
- Installing security assemblies
- Generating AuthorMembershipCondition XML
- Configuring security policy
- Testing Custom Membership Conditions
- Administering Code-Access Security
- Default Security Policy
- Security Policy Files
- Named Permission Sets
- Enterprise and User Policy Code Groups
- Machine Policy Code Groups
- Fully Trusted Assemblies
- Inspecting Declarative Security Statements
- Using the .NET Framework Configuration Tool
- Managing Fully Trusted Assemblies
- Adding a fully trusted assembly
- Deleting a fully trusted assembly
- Managing Named Permission Sets
- Creating named permission sets
- Managing Code Groups
- Creating code groups
- Other Security Policy Administration Options
- Using the Code-Access Security Policy Tool
- Controlling the Security System
- Switching code-access security on and off
- Switching execution permission checks on and off
- Administering Policy Levels
- Specifying the target policy level
- Specifying the target code group
- Managing fully trusted assemblies
- Managing named permission sets
- Managing code groups
- Evaluating Security Policy
- Forcing Security Changes
- Resetting Security Policy
- Role-Based Security
- Role-Based Security Explained
- .NET Role-Based Security Explained
- Comparing .NET Role-Based Security and Windows Security
- Programming Role-Based Security
- Introducing the IIdentity and IPrincipal Interfaces
- Determining the Current Principal
- Programming the Windows Role-Based Security Implementation
- Configuring the current WindowsPrincipal
- Impersonating Windows users
- Making Role-Based Security Demands
- Using imperative role-based security statements
- Using declarative role-based security statements
- Programming the Generic Role-Based Security Implementation
- Configuring the current GenericPrincipal
- Isolated Storage
- Isolated Storage Explained
- Levels of Isolation
- Determining user and code identity
- Isolation by user and assembly
- Isolation by user, assembly, and application domain
- Limitations of Isolated Storage
- Programming Isolated Storage
- Isolated Storage and Code-Access Security
- Obtaining a Store
- Creating Directories
- Creating, Reading, and Writing Files
- Searching for Files and Directories
- Deleting Files and Directories
- Deleting Stores
- Administering Isolated Storage
- Configuring Security Policy
- Granting isolated storage permissions with Mscorcfg.msc
- Granting isolated storage permissions with Caspol.exe
- Managing Isolated Storage Stores
- Part III
- Introduction to Cryptography
- Cryptography Explained
- Confidentiality
- Integrity
- Authentication
- Cryptography Is Key Management
- Cryptographic Attacks
- Brute Force Attacks, Theft, and Guessing
- Cryptanalysis
- Software Bugs
- Hashing Algorithms
- Hashing Algorithms Explained
- Creating a Hash Code
- Message Limits
- Hash Code Length
- The .NET Framework Hashing Algorithms
- Programming Hashing Algorithms
- The HashAlgorithm Class
- Instantiating the Algorithm
- Hashing Data from Memory
- Hashing Streamed Data
- Validating Hash Codes
- Keyed Hashing Algorithms Explained
- Creating the Keyed Hash Code
- HMAC algorithms
- Block cipher hash codes
- The .NET Framework Keyed Hashing Algorithms
- Programming Keyed Hashing Algorithms
- The KeyedHashAlgorithm Class
- Instantiating the Algorithm
- Hashing Data and Validating Hash Codes
- Extending the .NET Framework
- The Alder32 Algorithm Explained
- Defining the Abstract Class
- Defining the Implementation Class
- Creating the implementation class
- Implementing the Initialize method
- Implementing the HashCore and HashFinal methods
- Completing the class
- Testing the implementation
- Symmetric Encryption
- Encryption Revisited
- Symmetric Encryption Explained
- Creating the Encrypted Data
- Cipher Modes
- Electronic Codebook mode
- Cipher block chaining
- Cipher feedback mode
- Block Padding
- Symmetric Encryption Key Lengths
- The .NET Framework Encryption Algorithms
- Programming Symmetrical Encryption
- The SymmetricAlgorithm Class
- Instantiating the Algorithm
- Configuring the Algorithm
- Block and key sizes
- Cipher and padding modes
- Keys and initialization vectors (IVs)
- Encrypting and Decrypting Data
- Extending the .NET Framework
- The Extended Tiny Encryption Algorithm Explained
- Defining the Abstract Class
- Defining the Implementation Class
- Defining an Abstract Transformation
- Defining the Encryption Transformation
- Defining the Decryption Transformation
- Asymmetric Encryption
- Asymmetric Encryption Explained
- Creating Asymmetric Keys
- Asymmetric Algorithm Security
- Creating the Encrypted Data
- Asymmetric data padding
- Programming Asymmetrical Encryption
- The AsymmetricAlgorithm class
- The RSA class
- The RSACryptoServiceProvider Class
- Instantiating the Algorithm
- Using RSA Keys
- Encrypting and Decrypting Data
- Extending the .NET Framework
- The ElGamal Algorithm Explained
- ElGamal key generation protocol
- ElGamal encryption and decryption functions
- Processing Large Integer Values
- Defining the Abstract Class
- Defining the Implementation Class
- Defining the Abstract Cipher Function Class
- Defining the Encryption Class
- Defining the Decryption Class
- Testing the Algorithm
- Digital Signatures
- Digital Signatures Explained
- Digital Signature Security
- The .NET Framework Digital Signature Algorithms
- Creating Digital Signatures
- Programming Digital Signatures
- Using the Abstract Class
- Using the Implementation Class
- Using the Signature Formatter Classes
- Programming XML Signatures
- XMLDSIG Explained
- Signing an XML Document
- Creating the reference
- Creating the SignedXML
- Setting the signing algorithm
- Creating the signature
- Embedding Objects in the Signature
- Verifying an XML Signature
- Extending the .NET Framework
- The ElGamal Signature Functions Explained
- Defining the Signature Function Class
- Implementing the Managed Class Methods
- Defining the PKCS #1 Helper Class
- Defining the Signature Formatter Class
- Defining the Signature Deformatter Class
- Testing the Algorithm
- Cryptographic Keys
- Cryptographic Keys Explained
- Understanding Key Complexity
- Exchanging Symmetric Algorithm Keys
- Programming Cryptographic Keys
- Creating Keys
- Using the algorithm classes
- Using a random number generator
- Using a key-derivation protocol
- Using Key Persistence
- Key Exchange Formatting
- Extending the .NET Framework
- ElGamal Key Exchange Explained
- Defining the Key Exchange Formatter
- Defining the Key Exchange Deformatter
- Part IV
- ASP.NET Application Security
- ASP.NET Security Explained
- ASP.NET Security Overview
- ASP.NET Configuration Files
- ASP.NET security-related configuration elements
- Using &location& elements
- Configuring the ASP.NET Worker Process Identity
- Authentication
- Configuring IIS Authentication Modes
- No Authentication
- Windows Authentication
- Forms Authentication
- Configuring Forms authentication
- Creating the logon page
- Creating the protected page
- Passport Authentication
- Authorization
- File Authorization
- URL Authorization
- Impersonation
- ASP.NET and Code-Access Security
- COM+ Security
- COM+ Security Explained
- COM+ Role-Based Security
- COM+ Process-Access Security
- Authentication
- Impersonation
- Programming COM+ Security
- Creating the Serviced Component
- Specifying the COM+ Application Type
- Applying the Security Attributes
- The ApplicationAccessControl attribute
- The ComponentAccessControl Attribute
- The SecurityRole attribute
- The SecureMethod attribute
- Compiling and Installing the COM+ Application
- Administering COM+ Security
- Viewing the COM+ Catalogue
- Populating COM+ Application Roles
- Assessing and Assigning Role Scope
- Managing COM+ Security
- Managing the application
- Managing the component
- The Event Log Service
- The Event Log Service Explained
- Event Logs
- Event Sources
- Event Structure
- Event source name
- Message
- Event type
- Event identifier and event category
- Binary data
- Programming the Event Log Service
- Querying the Event Log System
- Using Event Sources
- Reading Event Logs
- Writing Events
- Using Custom Event Logs
- Monitoring Event Logs
- Part V
- How to Use This Quick Reference
- Finding a Quick-Reference Entry
- Reading a Quick-Reference Entry
- Type Name, Namespace, Assembly, Type Category, and Flags
- Description
- Synopsis
- Member availability and flags
- Functional grouping of members
- Class Hierarchy
- Cross-References
- A Note About Type Names
- Converting from C# to VB Syntax
- General Considerations
- Classes
- Structures
- Interfaces
- Class, Structure, and Interface Members
- Fields
- Methods
- Properties
- Events
- Delegates
- Enumerations
- The System.Security Namespace
- AllowPartiallyTrustedCallersAttribute
- CodeAccessPermission
- IEvidenceFactory
- IPermission
- ISecurityEncodable
- ISecurityPolicyEncodable
- IStackWalk
- NamedPermissionSet
- PermissionSet
- PolicyLevelType
- SecurityElement
- SecurityException
- SecurityManager
- SecurityZone
- SuppressUnmanagedCodeSecurityAttribute
- UnverifiableCodeAttribute
- VerificationException
- XmlSyntaxException
- The System.Security.Cryptography Namespace
- AsymmetricAlgorithm
- AsymmetricKeyExchangeDeformatter
- AsymmetricKeyExchangeFormatter
- AsymmetricSignatureDeformatter
- AsymmetricSignatureFormatter
- CipherMode
- CryptoAPITransform
- CryptoConfig
- CryptographicException
- CryptographicUnexpectedOperationException
- CryptoStream
- CryptoStreamMode
- CspParameters
- CspProviderFlags
- DeriveBytes
- DES
- DESCryptoServiceProvider
- DSA
- DSACryptoServiceProvider
- DSAParameters
- DSASignatureDeformatter
- DSASignatureFormatter
- FromBase64Transform
- FromBase64TransformMode
- HashAlgorithm
- HMACSHA1
- ICryptoTransform
- KeyedHashAlgorithm
- KeySizes
- MACTripleDES
- MaskGenerationMethod
- MD5
- MD5CryptoServiceProvider
- PaddingMode
- PasswordDeriveBytes
- PKCS1MaskGenerationMethod
- RandomNumberGenerator
- RC2
- RC2CryptoServiceProvider
- Rijndael
- RijndaelManaged
- RNGCryptoServiceProvider
- RSA
- RSACryptoServiceProvider
- RSAOAEPKeyExchangeDeformatter
- RSAOAEPKeyExchangeFormatter
- RSAParameters
- RSAPKCS1KeyExchangeDeformatter
- RSAPKCS1KeyExchangeFormatter
- RSAPKCS1SignatureDeformatter
- RSAPKCS1SignatureFormatter
- SHA1
- SHA1CryptoServiceProvider
- SHA1Managed
- SHA256
- SHA256Managed
- SHA384
- SHA384Managed
- SHA512
- SHA512Managed
- SignatureDescription
- SymmetricAlgorithm
- ToBase64Transform
- TripleDES
- TripleDESCryptoServiceProvider
- The System.Security.Cryptography. X509Certificates Namespace
- X509Certificate
- X509CertificateCollection
- X509CertificateCollection.X509CertificateEnumerator
- The System.Security.Cryptography. Xml Namespace
- DataObject
- DSAKeyValue
- KeyInfo
- KeyInfoClause
- KeyInfoName
- KeyInfoNode
- KeyInfoRetrievalMethod
- KeyInfoX509Data
- Reference
- RSAKeyValue
- Signature
- SignedInfo
- SignedXml
- Transform
- TransformChain
- XmlDsigBase64Transform
- XmlDsigC14NTransform
- XmlDsigC14NWithCommentsTransform
- XmlDsigEnvelopedSignatureTransform
- XmlDsigXPathTransform
- XmlDsigXsltTransform
- The System.Security.Permissions Namespace
- CodeAccessSecurityAttribute
- EnvironmentPermission
- EnvironmentPermissionAccess
- EnvironmentPermissionAttribute
- FileDialogPermission
- FileDialogPermissionAccess
- FileDialogPermissionAttribute
- FileIOPermission
- FileIOPermissionAccess
- FileIOPermissionAttribute
- IsolatedStorageContainment
- IsolatedStorageFilePermission
- IsolatedStorageFilePermissionAttribute
- IsolatedStoragePermission
- IsolatedStoragePermissionAttribute
- IUnrestrictedPermission
- PermissionSetAttribute
- PermissionState
- PrincipalPermission
- PrincipalPermissionAttribute
- PublisherIdentityPermission
- PublisherIdentityPermissionAttribute
- ReflectionPermission
- ReflectionPermissionAttribute
- ReflectionPermissionFlag
- RegistryPermission
- RegistryPermissionAccess
- RegistryPermissionAttribute
- ResourcePermissionBase
- ResourcePermissionBaseEntry
- SecurityAction
- SecurityAttribute
- SecurityPermission
- SecurityPermissionAttribute
- SecurityPermissionFlag
- SiteIdentityPermission
- SiteIdentityPermissionAttribute
- StrongNameIdentityPermission
- StrongNameIdentityPermissionAttribute
- StrongNamePublicKeyBlob
- UIPermission
- UIPermissionAttribute
- UIPermissionClipboard
- UIPermissionWindow
- UrlIdentityPermission
- UrlIdentityPermissionAttribute
- ZoneIdentityPermission
- ZoneIdentityPermissionAttribute
- The System.Security.Policy Namespace
- AllMembershipCondition
- ApplicationDirectory
- ApplicationDirectoryMembershipCondition
- CodeGroup
- Evidence
- FileCodeGroup
- FirstMatchCodeGroup
- Hash
- HashMembershipCondition
- IIdentityPermissionFactory
- IMembershipCondition
- NetCodeGroup
- PermissionRequestEvidence
- PolicyException
- PolicyLevel
- PolicyStatement
- PolicyStatementAttribute
- Publisher
- PublisherMembershipCondition
- Site
- SiteMembershipCondition
- StrongName
- StrongNameMembershipCondition
- UnionCodeGroup
- Url
- UrlMembershipCondition
- Zone
- ZoneMembershipCondition
- The System.Security.Principal Namespace
- GenericIdentity
- GenericPrincipal
- IIdentity
- IPrincipal
- PrincipalPolicy
- WindowsAccountType
- WindowsBuiltInRole
- WindowsIdentity
- WindowsImpersonationContext
- WindowsPrincipal
- Index
System requirements
File format: ePUB
Copy protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (not Kindle).
The file format ePub works well for novels and non-fiction books – i.e., „flowing” text without complex layout. On an e-reader or smartphone, line and page breaks automatically adjust to fit the small displays.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our ebook Help page.