none
Security exception RRS feed

  • Pergunta

  • Olá,

    Estou trabalhando com MySQL, C#. Tenho um login feito pelo membership que está funcionando normal. Porém ao tentar executar qualquer ação na pagina após a autenticação, exemplo: deletar um dado do gridview,  estou recebendo essa exception.


    Na minha máquina ocorre tudo bem, só quando hospedo é que gera essa exception.

    Alguém podeira me ajudar?

    Obrigado,



    • Editado Diogo_Costa domingo, 19 de fevereiro de 2012 17:57
    domingo, 19 de fevereiro de 2012 17:43

Respostas

  • Eu reparei no HTMLEditor e fui ao codeplex ver o código usada no Set da propriedade ActiveMode (ultima versão) e o que encontrei foi:

            [DefaultValue(ActiveModeType.Design)]
            [Category("Behavior")]
            public ActiveModeType ActiveMode
            {
                set
                {
                    ViewState["ActiveMode"] = value;
                    if (_designer != null && isDesign)
                    {
                        RefreshDesigner();
                    }
                }
            }
    

    Assumindo que não estás em DesignMode o erro de segurança parece estar relacionado com o ViewState.
    Como o erro ocorre num Postback (caso contrário o método LoadPostData não era executado) desconfiei do tampering.

    Ao olhar o método LoadPostData do EditPanel encontrei o seguinte:

            protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
            {
                [...]
    
                post = postCollection[ActiveModeId];
                if (!string.IsNullOrEmpty(post))
                {
                    ActiveMode = (ActiveModeType)(Int64.Parse(post, CultureInfo.InvariantCulture));
                }
                [...]
    

    Isto significa que o é feito um cast directo de int64 para ActiveModeType o que pode ser um problema se o valor em causa não for válido para este enumerado. Talvez isto seja uma pista ... precisamos de mais dados.

    Nuno Gomes http://nunogomes.net

    • Marcado como Resposta Harley Araujo quinta-feira, 23 de fevereiro de 2012 11:48
    domingo, 19 de fevereiro de 2012 23:31

Todas as Respostas

  • Boas Diogo,

    embora seja um tiro no escuro eu aponto para tampering do ViewState ou então a aplicação está numa farm e a machineKey não é a mesma em todas as máquina resultando num erro semelhante pois o ViewState encriptado numa máquina não é válido nas restantes.

    Qual o ambiente de hospedagem?


    Nuno Gomes http://nunogomes.net

    domingo, 19 de fevereiro de 2012 21:10
  • E ae Nuno,

    Estou hospedando em um servidor web, no do UOL para ser exato. Estou usando o AJAX tool kit, e observei que ele é mencionando no stack trace nessa imagem, estou suspeitando que o problema esteja na versão dele, pois acho que o da uol é o tool kit 3.5 e o que eu fiz foi pelo 4.0. Ainda vou procurar me informar sobre isso e fazer alguns testes. Mas se eu estiver errado, favor me corrijam... rs. =/

    domingo, 19 de fevereiro de 2012 22:59
  • Eu reparei no HTMLEditor e fui ao codeplex ver o código usada no Set da propriedade ActiveMode (ultima versão) e o que encontrei foi:

            [DefaultValue(ActiveModeType.Design)]
            [Category("Behavior")]
            public ActiveModeType ActiveMode
            {
                set
                {
                    ViewState["ActiveMode"] = value;
                    if (_designer != null && isDesign)
                    {
                        RefreshDesigner();
                    }
                }
            }
    

    Assumindo que não estás em DesignMode o erro de segurança parece estar relacionado com o ViewState.
    Como o erro ocorre num Postback (caso contrário o método LoadPostData não era executado) desconfiei do tampering.

    Ao olhar o método LoadPostData do EditPanel encontrei o seguinte:

            protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
            {
                [...]
    
                post = postCollection[ActiveModeId];
                if (!string.IsNullOrEmpty(post))
                {
                    ActiveMode = (ActiveModeType)(Int64.Parse(post, CultureInfo.InvariantCulture));
                }
                [...]
    

    Isto significa que o é feito um cast directo de int64 para ActiveModeType o que pode ser um problema se o valor em causa não for válido para este enumerado. Talvez isto seja uma pista ... precisamos de mais dados.

    Nuno Gomes http://nunogomes.net

    • Marcado como Resposta Harley Araujo quinta-feira, 23 de fevereiro de 2012 11:48
    domingo, 19 de fevereiro de 2012 23:31
  • Hum.. quais dados a mais eu posso colher?
    segunda-feira, 20 de fevereiro de 2012 01:30
  • Nestas situações a resposta é ... tudo o conseguires arranjar.

    Mas por exemplo ... a aplicação está a correr em FullTrusted? normalmente em shared hosting não permitem.


    Nuno Gomes http://nunogomes.net

    segunda-feira, 20 de fevereiro de 2012 02:00
  • Nuss... achei que fosse um problema mais simples. =/

    Não está a correr em FullTrusted. Estou no inicio do meu aprendizado em .NET, então não estou conseguindo acompanhar seus pensamentos com tranquilidade... rs. Vou dar uma estudada mais profunda nas questão que você já levantou, e se tiver mais alguma ideia ficarei grato. =D

    segunda-feira, 20 de fevereiro de 2012 03:20