如何在ASP.NET中保护AJAX请求?

我正在开发一个应用程序,我在其中显示网格中的产品。 在网格中有一个列具有禁用/启用图标,点击该图标后,我通过AJAX向我的页面manageProduct.aspx发出请求,以启用/禁用该特定产品。

在我的ajax请求中,我将productID作为参数传递,因此最终的ajax查询为as

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

现在,如果有人(专业黑客或网络开发人员)可以获得此URL(很容易从我的javascript文件中获取),那么他可以创建一个将作为循环运行的脚本并禁用我的所有产品。

所以,我想知道有没有任何机制,技术或方法,如果有人试图直接执行该页面,它将返回错误(正确的消息“你没有被授权或其他东西”)否则如果页面从所需的页面执行,就像我显示产品列表的位置一样,然后它将正确地执行。

基本上我想保护我的AJAX请求,所以没有人可以直接执行它们。

在PHP中:

在php中,我的同事通过检查页面的refrer来保护这个PHP页面。 如下:

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

请告诉我如何在ASP.NET(C#)中使用相同或任何其他不同但安全的技术,我在我的应用程序中使用jQUERY来发出ajax请求。

谢谢

忘记使用引用者 – 伪造是微不足道的。 没有办法可靠地判断请求是直接发出还是作为对其他内容的响应。

如果您想通过请求URL来阻止未经授权的人员对系统产生影响,那么您需要更智能的东西来确定他们的授权级别(可能是使用HTTP Basic Auth或Cookies实现的密码系统)。

无论你做什么,都不要依赖像’HTTP_REFERER’这样的http标头,因为它们很容易被欺骗。

您需要检查您的用户已登录的服务。编写一个良好的安全登录系统也不容易,但这是您需要做的,或使用内置的“表单身份validation”。

此外,不要使用顺序产品ID,使用uniqueidentifier,您仍然可以使用整数产品ID进行显示,但对于您描述的所有其他用途,您将要使用产品uniqueidentifier / guid。