Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / AspNetPartialTrustHelpers.cs / 1305376 / AspNetPartialTrustHelpers.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System.Runtime; using System.Security; using System.Security.Permissions; using System.Threading; using System.Web; static class AspNetPartialTrustHelpers { [Fx.Tag.SecurityNote(Critical = "Caches the PermissionSet associated with the asp.net trust level." + "This will not change over the life of the AppDomain.")] [SecurityCritical] static SecurityContext aspNetSecurityContext; [Fx.Tag.SecurityNote(Critical = "If erroneously set to true, could bypass the PermitOnly.")] [SecurityCritical] static bool isInitialized; [Fx.Tag.SecurityNote(Miscellaneous = "RequiresReview - determines if the given PermissionSet is full trust." + "We will base subsequent security decisions on this.")] static bool IsFullTrust(PermissionSet perms) { return perms == null || perms.IsUnrestricted(); } internal static bool NeedPartialTrustInvoke { [Fx.Tag.SecurityNote(Critical = "Makes a security sensitive decision, updates aspNetSecurityContext and isInitialized.", Safe = "Ok to know whether the ASP app is partial trust.")] [SecuritySafeCritical] get { if (!isInitialized) { NamedPermissionSet aspNetPermissionSet = GetHttpRuntimeNamedPermissionSet(); if (!IsFullTrust(aspNetPermissionSet)) { try { aspNetPermissionSet.PermitOnly(); aspNetSecurityContext = System.Runtime.PartialTrustHelpers.CaptureSecurityContextNoIdentityFlow(); } finally { CodeAccessPermission.RevertPermitOnly(); } } isInitialized = true; } return aspNetSecurityContext != null; } } [Fx.Tag.SecurityNote(Critical = "Asserts AspNetHostingPermission.")] [SecurityCritical] [AspNetHostingPermission(SecurityAction.Assert, Level=AspNetHostingPermissionLevel.Unrestricted)] static NamedPermissionSet GetHttpRuntimeNamedPermissionSet() { return HttpRuntime.GetNamedPermissionSet(); } [Fx.Tag.SecurityNote(Critical = "Touches aspNetSecurityContext.", Safe = "Ok to invoke the user's delegate under the PT context.")] [SecuritySafeCritical] internal static void PartialTrustInvoke(ContextCallback callback, object state) { if (NeedPartialTrustInvoke) { SecurityContext.Run(aspNetSecurityContext.CreateCopy(), callback, state); } else { callback(state); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AnchorEditor.cs
- BlobPersonalizationState.cs
- QilName.cs
- LinkedResourceCollection.cs
- MexNamedPipeBindingCollectionElement.cs
- SymDocumentType.cs
- OdbcConnectionString.cs
- BindingNavigatorDesigner.cs
- ToolboxItemImageConverter.cs
- XmlQualifiedNameTest.cs
- SynchronizationContext.cs
- VisualBrush.cs
- NativeMethods.cs
- FileRecordSequenceCompletedAsyncResult.cs
- ListViewSortEventArgs.cs
- OdbcHandle.cs
- WsdlWriter.cs
- JournalNavigationScope.cs
- ZoomPercentageConverter.cs
- LabelLiteral.cs
- CodeRemoveEventStatement.cs
- ProviderIncompatibleException.cs
- BinaryConverter.cs
- VisualStyleRenderer.cs
- ClientScriptManagerWrapper.cs
- FormViewPageEventArgs.cs
- CurrencyWrapper.cs
- PersonalizationEntry.cs
- ByteConverter.cs
- DoubleStorage.cs
- DefaultValueTypeConverter.cs
- Atom10FormatterFactory.cs
- ControlCollection.cs
- SizeConverter.cs
- ParameterElementCollection.cs
- ChtmlTextWriter.cs
- FormViewUpdatedEventArgs.cs
- StringValueSerializer.cs
- FixedSOMPageElement.cs
- Opcode.cs
- SqlConnectionStringBuilder.cs
- BamlReader.cs
- UmAlQuraCalendar.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- HttpDebugHandler.cs
- ImportOptions.cs
- XmlSerializationGeneratedCode.cs
- Int16Storage.cs
- AnnotationStore.cs
- BoundColumn.cs
- TextBoxBase.cs
- XmlSchema.cs
- MimeFormatter.cs
- DataObjectFieldAttribute.cs
- MasterPageBuildProvider.cs
- TiffBitmapEncoder.cs
- ObjectViewQueryResultData.cs
- PasswordBoxAutomationPeer.cs
- BufferedGraphicsManager.cs
- SizeChangedEventArgs.cs
- StatusBarItemAutomationPeer.cs
- Html32TextWriter.cs
- ExtenderControl.cs
- ContextInformation.cs
- XmlDataImplementation.cs
- precedingsibling.cs
- LinkConverter.cs
- StringComparer.cs
- ClusterRegistryConfigurationProvider.cs
- ColorAnimationUsingKeyFrames.cs
- DesignRelationCollection.cs
- TabControlAutomationPeer.cs
- TextProperties.cs
- RightsManagementEncryptionTransform.cs
- SafeNativeMethodsMilCoreApi.cs
- GlyphRunDrawing.cs
- LinqDataSourceHelper.cs
- AccessedThroughPropertyAttribute.cs
- DecoderFallback.cs
- ToolStripOverflowButton.cs
- ResourceIDHelper.cs
- RunClient.cs
- StringValidator.cs
- DbMetaDataColumnNames.cs
- DataRow.cs
- SchemaMerger.cs
- ShutDownListener.cs
- MouseEvent.cs
- SystemIPInterfaceProperties.cs
- RepeatBehavior.cs
- ListViewCommandEventArgs.cs
- DynamicQueryableWrapper.cs
- BrowsableAttribute.cs
- FormViewModeEventArgs.cs
- MethodAccessException.cs
- versioninfo.cs
- SelectionListDesigner.cs
- EntityDataSourceWizardForm.cs
- Expression.cs
- XmlSerializerVersionAttribute.cs