Thank you very much for your answer, I was afraid of having no one answering me. By default the .Net Framework allows it and some frameworks do not work on CoreCLR because of this restriction. Even transparent code from platform code is blocked.<div>
<br></div><div>I bypassed it by editing mono's source code but I would like to know if there is a security reason behind it.<div><br><div><div><div class="gmail_quote">2013/3/26 Rolf Bjarne Kvinge-4 [via Mono] <span dir="ltr"><<a href="/user/SendEmail.jtp?type=node&node=4659157&i=0" target="_top" rel="nofollow" link="external">[hidden email]</a>></span><br>
<blockquote style='border-left:2px solid #CCCCCC;padding:0 1em' class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">

        I believe you're asking the wrong question: why should CoreCLR allow
<br>transparent code to call internal methods? It doesn't matter if
<br>they're transparent or not, there's a reason a method is internal and
<br>you can make the object confused if internal methods are called
<br>directly.
<br><br>Rolf
<br><br></div><div><div class="h5">On Sun, Mar 24, 2013 at 7:08 PM, nelson <<a href="http://user/SendEmail.jtp?type=node&node=4659156&i=0" rel="nofollow" link="external" target="_blank">[hidden email]</a>> wrote:
</div></div><div><div><div class="h5"><div class='shrinkable-quote'><br>> I'm checking that code, at
<br>> <a href="https://github.com/mono/mono/blob/master/mono/metadata/security-core-clr.c" rel="nofollow" link="external" target="_blank">https://github.com/mono/mono/blob/master/mono/metadata/security-core-clr.c</a>.
<br>>
<br>> If to "ensure that the specified method can be used with reflection since
<br>> Transparent code cannot call Critical methods" is fine with me, why does
<br>> CoreCLR also prevents transparent code to call internal transparent methods
<br>> or properties through reflection ?
<br>>
<br>> I'm not a security expert, and am curious to know if removing this check
<br>> affects mono clr's security.
<br>> I'm comparing the code below to this page about CoreCLR :
<br>> <a href="http://www.mono-project.com/Moonlight2CoreCLR" rel="nofollow" link="external" target="_blank">http://www.mono-project.com/Moonlight2CoreCLR</a> .
<br>>
<br>> Details :
<br>>
<br>> /*
<br>>  * mono_security_core_clr_ensure_reflection_access_method:
<br>>  *
<br>>  *  Ensure that the specified method can be used with reflection since
<br>>  *  Transparent code cannot call Critical methods and can only call them
<br>>  *  if they are visible from it's point of view.
<br>>  *
<br>>  *  A MethodAccessException is thrown if the field is cannot be accessed.
<br>>  */
<br>> void
<br>> mono_security_core_clr_ensure_reflection_access_method (MonoMethod *method)
<br>> {
<br>>     MonoMethod *caller = get_reflection_caller ();
<br>>     /* CoreCLR restrictions applies to Transparent code/caller */
<br>>     if (mono_security_core_clr_method_level (caller, TRUE) !=
<br>> MONO_SECURITY_CORE_CLR_TRANSPARENT)
<br>>         return;
<br>>
<br>>     if (mono_security_core_clr_get_options () &
<br>> MONO_SECURITY_CORE_CLR_OPTIONS_RELAX_REFLECTION) {
<br>>         if (!mono_security_core_clr_is_platform_image
<br>> (method->klass->image))
<br>>             return;
<br>>     }
<br>>
<br>>     /* Transparent code cannot invoke, even using reflection, Critical code
<br>> */
<br>>     if (mono_security_core_clr_method_level (method, TRUE) ==
<br>> MONO_SECURITY_CORE_CLR_CRITICAL) {
<br>>         mono_raise_exception (get_method_access_exception (
<br>>             "Transparent method %s cannot invoke Critical method %s.",
<br>>             caller, method));
<br>>     }
<br>>
<br>>     /* also it cannot invoke a method that is not visible from it's (caller)
<br>> point of view */
<br>>     if (!check_method_access (caller, method)) {
<br>>         mono_raise_exception (get_method_access_exception (
<br>>             "Transparent method %s cannot invoke private/internal method
<br>> %s.",
<br>>             caller, method));
<br>>     }
<br>> }
<br>>
<br>> Hope someone can answer me...
<br>>
<br>>
<br>>
<br>> --
<br>> View this message in context: <a href="http://mono.1490590.n4.nabble.com/Why-does-Mono-s-CoreCLR-blocks-internal-method-reflection-from-transparent-code-tp4659140.html" rel="nofollow" link="external" target="_blank">http://mono.1490590.n4.nabble.com/Why-does-Mono-s-CoreCLR-blocks-internal-method-reflection-from-transparent-code-tp4659140.html</a></div>
> Sent from the Mono - Dev mailing list archive at Nabble.com.
<br>> _______________________________________________
<br>> Mono-devel-list mailing list
<br></div></div>> <a href="http://user/SendEmail.jtp?type=node&node=4659156&i=1" rel="nofollow" link="external" target="_blank">[hidden email]</a>
<br>> <a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" rel="nofollow" link="external" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a></div>_______________________________________________
<br>Mono-devel-list mailing list
<br><a href="http://user/SendEmail.jtp?type=node&node=4659156&i=2" rel="nofollow" link="external" target="_blank">[hidden email]</a>
<br><a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" rel="nofollow" link="external" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>

        
        
        
        <br>
        <br>
        <hr noshade size="1" color="#cccccc">
        <div style="color:#444;font:12px tahoma,geneva,helvetica,arial,sans-serif">
                <div style="font-weight:bold">If you reply to this email, your message will be added to the discussion below:</div>
                <a href="http://mono.1490590.n4.nabble.com/Why-does-Mono-s-CoreCLR-blocks-internal-method-reflection-from-transparent-code-tp4659140p4659156.html" target="_blank" rel="nofollow" link="external">http://mono.1490590.n4.nabble.com/Why-does-Mono-s-CoreCLR-blocks-internal-method-reflection-from-transparent-code-tp4659140p4659156.html</a>
        </div>
        <div style="color:#666;font:11px tahoma,geneva,helvetica,arial,sans-serif;margin-top:.4em;line-height:1.5em">
                
                To unsubscribe from Why does Mono's CoreCLR blocks internal method reflection from transparent code ?, <a href="" target="_blank" rel="nofollow" link="external">click here</a>.<br>

                <a href="http://mono.1490590.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml" rel="nofollow" style="font:9px serif" target="_blank" link="external">NAML</a>
        </div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Nelson Cabral
</div></div></div></div>


        
        
        
<br/><hr align="left" width="300" />
View this message in context: <a href="http://mono.1490590.n4.nabble.com/Why-does-Mono-s-CoreCLR-blocks-internal-method-reflection-from-transparent-code-tp4659140p4659157.html">Re: Why does Mono's CoreCLR blocks internal method reflection from transparent code ?</a><br/>
Sent from the <a href="http://mono.1490590.n4.nabble.com/Mono-Dev-f1517221.html">Mono - Dev mailing list archive</a> at Nabble.com.<br/>