none
Como mejorar el uso de WebMethod RRS feed

  • Pregunta

  • buenas noches  para todos.

    hace poco comen se atrabajar con peticiones ajax  que permiten el llamado de los métodos que tengo en el lado del servidor 

        [WebMethod]    //Setvidor 
            public static string Ejemplo()
            {
                return "Valor";

            }

    Cliente 

    <script type = "text/javascript">
    function ShowCurrentTime() {
        $.ajax({
            type: "POST",
            url: "Default.aspx/Ejemplo",
            data: '',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function(response) {
                alert(response.d);
            }
        });
    }
    function OnSuccess(response) {
        alert(response.d);
    }
    </script>

    hasta ahí normal mi duda es como es la mejor forma de usarlo ya que si lo dejo de esta manera  estoy exponiendo  tanto los métodos como los parámetros que recibe  ¿ como puedo evitar que el cliente vea estos métodos pues pienso que por seguridad no debería verse ?

    También  implemente PageMethods  para llamar el mismo método pero al igual  deja ver información sobre el método y los parámetros que le envió  

      PageMethods.Ejemplo(Entro,fallo);

    de que forma puedo hacer estas llamadas  asíncronas sin que el cliente vea la estructura  y que estoy exponiendo datos que por seguridad no deberían verse.

    muchas gracias por su ayudas 

    lunes, 9 de marzo de 2015 2:44

Respuestas

Todas las respuestas

  • hola

    >> ¿ como puedo evitar que el cliente vea estos métodos pues pienso que por seguridad no debería verse ?

    porque ? son servicio que estas exponiendo en que afecta que los vea

    si es un tema seguridad entonces aplica algun sistema de autenticacion al sitio para que quien use los servicio este previamente autenticado

    >>de que forma puedo hacer estas llamadas  asíncronas sin que el cliente vea la estructura  y que estoy exponiendo datos que por seguridad no deberían verse.

    el codigo javascript podrias ofuscalo si lo necesitas, pero para ello deberias poner todos el javascript que tengas en un archivo .js

    de esta forma podrias minimizarlo y hacerlo dificil a la lectura

    TRUCO: Cómo des-ofuscar código JavaScript de manera rápida

    ----

    tambine podrias usar el componente webessential, con este podrias con un click minimizar un .js

    http://vswebessentials.com/features/javascript

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 9 de marzo de 2015 3:22
  • de que forma puedo hacer estas llamadas  asíncronas sin que el cliente vea la estructura  y que estoy exponiendo datos que por seguridad no deberían verse.

    No puedes. El único remedio es trabajar íntegramente en lado servidor, sin usar AJAX desde el cliente. Si quieres trabajar sobre los datos con JavaScript en lado cliente, los datos necesariamente tienen que ser visibles. Si esto no debe ocurrir por razones de seguridad, entonces significa que el sistema de seguridad está mal planteado, y debe reconsiderarse.
    lunes, 9 de marzo de 2015 9:48
  • buenas noches 

    gracias por tu respuesta es de gran ayuda para seguir aprendiendo

    martes, 10 de marzo de 2015 0:13
  • buenas noches 

    gracias man por responder 

    martes, 10 de marzo de 2015 0:13
  • buenas noches 

    que pena contigo tengo  otra duda pues ya vi que puedo  manejar webmethod en mi pagina ahora tengo una duda 

    use peticiones ajax para llenar dropdownlist anidados y realmente todo funciona  bien.

    pero se me dio por guardar los datos por medio de un evento  al servidor desde asp.y el problema que me apareció fue el siguiente.

    Argumento de devolución o de devolución de llamadas no válido. La validación de eventos se habilita usando <pages enableEventValidation="true"/> en la configuración o <%@ Page EnableEventValidation="true" %> en una página. Por motivos de seguridad, esta característica comprueba que los argumentos pasados a eventos de devolución o de devolución de llamadas se origina desde el control del servidor que inicialmente los procesó. Si los datos son válidos y son los que se esperaba, utilice el método ClientScriptManager.RegisterForEventValidation para registrar los datos de devolución o de devolución de llamadas para su validación

    mi pregunta es  si hago una petición ajax en mi formulario   necesariamente tengo que guardar los datos con ajax ?

    ya no puedo hacer usu de los evento de los  controles  asp?

    Gracias me es de gran ayuda esta aclaraciones

    si es de importancia , estoy trabajando en  asp webforms 



    martes, 10 de marzo de 2015 0:29
  • >>use peticiones ajax para llenar dropdownlist anidados y realmente todo funciona  bien.

    si son controles de asp.net vas a tener siempres este problema cuando los modificas desde javascript, por un tema de seguridad asp.net valida los items contra el viewstate

    lo unico que queda es seguir el consejo del mensaje y definir el EnableEventValidation = false, de esta forma ya no validara si cambias la lista de items del combo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 10 de marzo de 2015 0:37
  • buenas noches

    gracias man  que pena la molestia por casualidad conoces una fuente confiable donde pueda ver mas sobre EnableEventValidation y como lo implementan 

    greacias

    martes, 10 de marzo de 2015 0:48
  • Hola Alexis Montaña R,

    Gracias por consultar en los foros. Respecto a lo que nos dice Leandro, y tu pregunta, te comparto algunos artículos de MSDN que hablan respecto a esto, espero te sean de utilidad:

    Page.EnableEventValidation Property

    Selectively Enable Form Validation When Using ASP.NET Web Controls

    PagesSection.EnableEventValidation Property

    How to set <pages enableEventValidation="true"/> in Master page

    Saludos,

    Karen.

    _________________


    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema.

    Es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.


    miércoles, 11 de marzo de 2015 23:22
    Moderador