我调用我的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 pagemethod。所以,如果有人看到页面源,那么他可以看到我正在调用的页面以及我传递的值。所以任何人都可以以同样的方式调用我的页面并获取数据。
所以这里我需要合并一些我将在运行时生成的tokenid,并将传递给服务器端函数。在这种情况下,用户可以再次看到tokenid但是如果他复制了我的tokenid,那么该tokenid对他不起作用。所以我只需要逻辑来生成动态tokenid,它只能在我的网络应用程序中有效。
请分享逻辑。
答案 0 :(得分:1)
我这样做:
TokenId通过Guid.NewGuid或RNGCryptoServiceProvider生成。
上下文 - 是一些与令牌相关联的数据(在您的情况下是'ID')。
由此
答案 1 :(得分:0)
如果你的意思是,没有人可以在他们的网站上使用ajax来访问你的数据。 跨域策略不允许浏览器通过ajax访问其他网站。 这还不够,或者你有一个完全不同的问题?
答案 2 :(得分:0)
很抱歉发布,因为我没有足够的声誉来发表评论。但之前关于跨域策略的讨论阻止了某人进行ajax调用来访问您的数据。 如果你安装一个名为firequery的简单firefox附加组件。您可以从页面的任何位置添加javascript / jquery调用并直接运行它们。 (浏览器的DOM和任何客户端总是可以被浏览器操纵)
因此,例如,我可以了解一个url并构建jquery ajax调用并将其直接放入firequery中,它将作为未经身份验证的用户立即执行,但在站点域内。我在我的公司产品中利用了这个问题。
您不能假设跨域政策会保护您。