Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------ // 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
- ProbeDuplexCD1AsyncResult.cs
- SizeF.cs
- RadioButton.cs
- _Connection.cs
- DetailsViewRowCollection.cs
- DesignerTransactionCloseEvent.cs
- AnnotationResourceChangedEventArgs.cs
- CodeDefaultValueExpression.cs
- EntityConnectionStringBuilder.cs
- SoapCodeExporter.cs
- MarkupObject.cs
- AppDomainShutdownMonitor.cs
- TransformCryptoHandle.cs
- basemetadatamappingvisitor.cs
- MailDefinition.cs
- Win32SafeHandles.cs
- Filter.cs
- ApplicationProxyInternal.cs
- HashHelper.cs
- KeyConverter.cs
- CompositeKey.cs
- RadialGradientBrush.cs
- CodeDirectoryCompiler.cs
- WhitespaceRuleReader.cs
- DocumentPageViewAutomationPeer.cs
- WmpBitmapDecoder.cs
- TransformGroup.cs
- WebPartDisplayModeEventArgs.cs
- Variable.cs
- RTLAwareMessageBox.cs
- UserControl.cs
- NavigationWindowAutomationPeer.cs
- Module.cs
- SHA1CryptoServiceProvider.cs
- OutputCacheSettingsSection.cs
- HtmlElement.cs
- OpenFileDialog.cs
- DataBindingHandlerAttribute.cs
- HitTestResult.cs
- OleDbCommandBuilder.cs
- WebPartsPersonalizationAuthorization.cs
- ResourceReferenceExpression.cs
- HighlightVisual.cs
- GridViewRowCollection.cs
- MarshalDirectiveException.cs
- TimelineClockCollection.cs
- TickBar.cs
- ClientRuntimeConfig.cs
- TreeNodeEventArgs.cs
- RestClientProxyHandler.cs
- KeyFrames.cs
- X509Certificate2.cs
- X509ChainPolicy.cs
- Error.cs
- MimeXmlReflector.cs
- ApplicationBuildProvider.cs
- Rect3D.cs
- CodeCatchClause.cs
- PromptBuilder.cs
- LifetimeServices.cs
- AutoResizedEvent.cs
- HTTPNotFoundHandler.cs
- WindowsScroll.cs
- CssTextWriter.cs
- Convert.cs
- _SslState.cs
- ProxyHelper.cs
- WebUtil.cs
- ConnectionStringEditor.cs
- TimeZone.cs
- CapabilitiesUse.cs
- UserMapPath.cs
- ZipFileInfoCollection.cs
- CheckPair.cs
- _Events.cs
- RoutedPropertyChangedEventArgs.cs
- EntityDataSourceStatementEditor.cs
- TraceRecord.cs
- streamingZipPartStream.cs
- NGCSerializer.cs
- recordstatefactory.cs
- SerialPort.cs
- InternalSafeNativeMethods.cs
- PointF.cs
- Context.cs
- XmlDictionaryWriter.cs
- GenericEnumConverter.cs
- DbConnectionPool.cs
- CatalogZone.cs
- PropertyTab.cs
- SQLBinary.cs
- MonitoringDescriptionAttribute.cs
- RuntimeVariablesExpression.cs
- DataGridViewBindingCompleteEventArgs.cs
- Compiler.cs
- HtmlInputSubmit.cs
- OperationResponse.cs
- HtmlInputCheckBox.cs
- TaskFactory.cs
- GridErrorDlg.cs