如何保护Jquery和asp.net页面方法调用的安全

如何保护Jquery和asp.net页面方法调用的安全,jquery,asp.net,Jquery,Asp.net,我调用我的asp.net页面方法,如下代码所示 $.ajax({ type: "POST", url: "MyPage.aspx/GetItems", data: "{'ID':'1', 'Name':'Keith'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (data

我调用我的asp.net页面方法,如下代码所示

 $.ajax({
        type: "POST",
        url: "MyPage.aspx/GetItems",
        data: "{'ID':'1', 'Name':'Keith'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
           // my success code
        }
    });
上面是我使用jquery调用asp.net页面方法的方法。因此,如果有人看到页面源,那么他就可以看到我调用的页面以及我传递的值。所以任何人都可以用同样的方式调用我的页面并获取数据

所以在这里,我需要合并一些令牌ID,我将在运行时生成这些令牌ID,并将其传递给服务器端函数。在这种情况下,用户可以再次看到tokenid,但如果他复制了我的tokenid,那么该tokenid将不适用于他。所以我只需要逻辑来生成动态令牌ID,它只在我的web应用程序中有效


请分享逻辑。

如果你是认真的,没有人可以在他们的网站上使用ajax访问你的数据。 跨域策略不允许浏览器通过ajax访问其他网站。 这就足够了,还是你有一个完全不同的问题?

我这样做:

  • 服务器端:创建存储命令的会话变量
  • 客户端:仅使用令牌ID
  • 令牌ID可以通过Guid.NewGuid或RNGCryptoServiceProvider生成。
    上下文-是一些与令牌关联的数据(在您的例子中是'ID')

    因此

    • 我们从不向客户端发送真实的ID
    • tokenid是随机的,不可重复
    • 用户无法访问常规数据

      • 很抱歉发帖,因为我没有足够的声誉发表评论。但是前面提到的跨域策略会阻止某人通过ajax调用来访问您的数据。 如果您安装了一个名为firequery的简单firefox插件。您可以从页面上的任何位置添加javascript/jquery调用,并直接运行它们。(页面的DOM和任何客户端都可以由浏览器操作)

        例如,我可以了解一个url,建立jQueryAjax调用,并将其直接放入firequery中,它将以未经身份验证的用户身份立即执行,但在sites域内。我在公司的产品中利用了这个问题


        您不能假设跨域策略会保护您

        所以你的意思是说,如果我知道确切的页面url,我不能从我的站点调用另一个站点的aspx页面方法。假设像$.ajax({type:“POST”,url:“www.othersite.com/Others_Page.aspx/GetItems),数据:“{'pageIndex':'”+“+Page+”,'pageSize':'“+per_Page+”}”,内容类型:“application/json;charset=utf-8”,数据类型:“json”,成功:函数(数据){mycarousel_itemAddCallback(carousel,first,last,data.d,page);});请指导我。感谢您无论是转盘还是飞机。现代浏览器都不允许您从您的网站向另一个网站发出AJAX调用。@avetarman,JSON可能是这样,但请查看JSONP。它是专门为向不同的域发出AJAX调用而设计的。如果您没有对服务的写访问权,则不能使用JSONPer files.JSONP需要修改处理{php,jsp,asp}才能工作。你能给我一个示例代码,告诉我你用你说的('tokenid','context')管理安全性的方法吗。谢谢,如果这不是答案,你真的应该在评论中发表,一旦你有足够的代表这样做。