¿Cómo asegurar la solicitud AJAX en ASP.NET?

Estoy desarrollando una aplicación en la que estoy mostrando productos en una cuadrícula. En la cuadrícula hay una columna que tiene un ícono de deshabilitar / habilitar y al hacer clic en ese ícono, estoy enviando una solicitud a través de AJAX a mi página manageProduct.aspx para habilitar / deshabilitar ese producto en particular.

En mi solicitud de ajax, estoy pasando productID como parámetro, por lo que la consulta final de ajax es como

 http://example.com/manageProduct.aspx?id=234 

Ahora, si alguien (hacker profesional o desarrollador web) puede obtener esta URL (que es fácil de obtener de mis archivos javascript), entonces puede crear un script que se ejecute como un bucle y deshabilitará todos mis productos.

Por lo tanto, quiero saber si existe algún mecanismo, técnica o método que, si alguien intenta ejecutar esa página directamente, devolverá un error (un mensaje adecuado “No está autorizado o algo así”). se ejecuta desde la página deseada, como donde estoy mostrando la lista de productos, luego se ejecutará correctamente.

Básicamente, quiero asegurar mis solicitudes AJAX, para que nadie pueda ejecutarlas directamente.

En PHP:

En php, mi colega asegura estas páginas PHP revisando la referencia de la página. como a continuación:

 $back_link = $_SERVER['HTTP_REFERER']; if ($back_link =='') { echo 'You are not authorized to execute this page'; } else { //coding } 

Por favor, dígame cómo a la misma o a cualquier otra técnica diferente pero segura en ASP.NET (C #), estoy usando jQUERY en mi aplicación para realizar solicitudes de Ajax.

Gracias

Olvídate de usar el referer, es trivial forjar. No hay forma de saber de manera confiable si una solicitud se realiza directamente o como respuesta a otra cosa.

Si desea evitar que personas no autorizadas tengan un efecto en el sistema solicitando una URL, entonces necesita algo más inteligente que eso para determinar su nivel de autorización (probablemente un sistema de contraseña implementado con autenticación básica HTTP o cookies).

Hagas lo que hagas, no confíes en los encabezados http como ‘HTTP_REFERER’, ya que pueden ser fácilmente falsificados.

Debe verificar en su servicio que su usuario haya iniciado sesión. Escribir un buen sistema de inicio de sesión seguro tampoco es fácil, pero eso es lo que necesita hacer, o usar la “autenticación de formularios” incorporada.

Además, no utilice identificadores de producto secuenciales, use identificadores únicos, aún puede tener un identificador de producto entero para mostrar, pero para todos los demás usos como el que describe, querrá usar el identificador / producto exclusivo del producto.