How can I stop this third-party DLL from throwing security exceptions in my full trust web application

I am trying to use the Yahoo YUI compressor .NET port on my website running on my local Windows 7 development machine.

The web application runs in full trust mode. In addition, in my web.configI have this set:

<system.web>
    <trust level="Full" />
</system.web>

When I call this code, it throws a security exception

string output = "{someJavaScriptCode:true}"; 
output = JavaScriptCompressor.Compress(output);

Exception Details:

Description: An application attempted to perform an operation not permitted by a security policy. To provide this application, please contact your system administrator or change the application trust level in the configuration file.

:System.Security.SecurityException: "System.Security.Permissions.SecurityPermission, mscorlib, Version = 2.0.0.0, Culture = , PublicKeyToken = b77a5c561934e089' .

, , , .

Google, , .

, .

- , ? , -?

edit , .

[SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
   System.Threading.Thread.set_CurrentCulture(CultureInfo value) +38
   Yahoo.Yui.Compressor.JavaScriptCompressor..ctor(String javaScript, Boolean isVerboseLogging, Encoding encoding, CultureInfo threadCulture, Boolean isEvalIgnored, ErrorReporter errorReporter) +196
   Yahoo.Yui.Compressor.JavaScriptCompressor.Compress(String javaScript, Boolean isVerboseLogging, Boolean isObfuscateJavascript, Boolean preserveAllSemicolons, Boolean disableOptimizations, Int32 lineBreakPosition, Encoding encoding, CultureInfo threadCulture, Boolean isEvalIgnored) +119
   Yahoo.Yui.Compressor.JavaScriptCompressor.Compress(String javaScript, Boolean isVerboseLogging, Boolean isObfuscateJavascript, Boolean preserveAllSemicolons, Boolean disableOptimizations, Int32 lineBreakPosition, Encoding encoding, CultureInfo threadCulture) +67
   Yahoo.Yui.Compressor.JavaScriptCompressor.Compress(String javaScript, Boolean isVerboseLogging, Boolean isObfuscateJavascript, Boolean preserveAllSemicolons, Boolean disableOptimizations, Int32 lineBreakPosition) +112
   VideoSync.Js.Script.GetOutput(Boolean compress) in [REDACTED]\Script.ashx.cs:78
   VideoSync.Core.CombinerBase.ProcessRequest(HttpContext c) in [REDACTED]\CombinerBase.cs:28
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
+3
1

PermissionSet , JavaScriptCompressor.Compress.

, :

[PermissionSet(SecurityAction.Assert, Unrestricted = true)]
void CompressSomething()
{
    // ...

    var result = JavaScriptCompressor.Compress(output);

    // ...
}

CLR , , .

, , .NET Code Access Security. :

http://msdn.microsoft.com/en-us/library/930b76w0(v=vs.71).aspx

EDIT - , :

, CultureInfo SecurityPermission .

, :

var cas = new SecurityPermission(PermissionState.Unrestricted);
try
{
    cas.Assert();

    // ...
    var result = JavaScriptCompressor.Compress(output);
    // ...
}
finally
{
    CodeAccessPermission.RevertAssert();
}

, , SecurityPermission. , SecurityPermissionsFlag, .

0

Source: https://habr.com/ru/post/1781034/


All Articles