jquery - ASP.NET PageMethods 和 JQuery AJAX Post – 它到底有多安全?

标签 jquery ajax security asp.net-3.5 pagemethods

我有一个以下场景 - 我真正希望的是来自真人的真正帮助。建议/解决方案?请。

我有一个前任的 Extranet 网站。 www.foo.com (asp.net 3.5) 我正在使用 JQuery 1.3.2 在 default.aspx 页面 (www.foo.com/default.aspx) 中调用 ValidateLogin PageMethods

代码如下所示

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    url: "Default.aspx/ValidateLogin",
    data: '{' + arg + '}',
    success: function (data) {
        if (data.d != 0) {
            window.location = "http://www.google.com";
        } else {
            alert("Invalid UserName/Password.");
            ResetLoginForm();
        }
    },
    error: function (xhr, status, error) {
        var strerror = xhr.status + error;
        alert("Error Communicating with Server:" + strerror);
        ResetLoginForm();
    }
});

代码存储在外部js文件中。对于前default.js。

由于该网站是公开的,任何人都可以下载default.js,从而可以查看上面给出的代码。

我的问题是,一旦该人获得此网址:“Default.aspx/ValidateLogin”,他就可以向服务器发出请求,服务器将自豪地响应该请求。

我有什么选择?如何验证请求?如何防止此类未经授权的请求?

最佳答案

Web 请求本质上是公开的。他们甚至不需要查看源文件。他们可以简单地监视 HTTP 请求并重放这些请求(例如,使用 fiddler 等工具非常容易)。

节流问题

虽然限制解决方案会降低攻击率,但实际上它们并不可行。问题是对手可以编写一个运行几天的脚本。话又说回来,他可以使用代理来发送并行请求。如果您对每个用户名进行限制,那么攻击者可以通过尝试对合法用户名进行虚假登录来实现 DoS,并且当实际用户尝试登录时,他不会知道为什么自己被锁定。

解决方案

典型的方法是使用随机数键。这将需要一些额外的工作,但它会缓解问题,并且仅在您确实预计会遭受攻击或其他攻击时才建议这样做。其简化版本是客户端将随机数 key 作为 URI 查询参数传递。 key 首先由服务器发送给客户端。发出请求后,服务器会验证数据库中是否存在随机数 key 并允许请求。它会立即删除随机数 key ,以便用户无法使用相同的随机数 key 发出另一个请求,但服务器需要向用户发出更多随机数 key 。

简化的解决方案是只允许经过身份验证的用户发出 Web 服务请求,但由于您正在设计一个登录系统,这显然不可行。

除非你有一些讨厌的对手,否则我不会担心。

关于jquery - ASP.NET PageMethods 和 JQuery AJAX Post – 它到底有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812945/

相关文章:

javascript - 在客户端从数组构造 JSON 对象?

javascript - 悬停时 Div 出现在链接后面? - 查询/js

javascript - 如何在 jQuery 中形式化/组织大量的 eventHandler?

javascript - 如何显示用 JavaScript 创建的 Canvas ?

php - 从图像超链接运行 PHP 函数(Facemash 项目)

java - 如何限制开发人员使用反射访问Java中的私有(private)方法和构造函数?

c# - 使用 Json.NET 进行不安全的反序列化

jquery - 单击按钮时,所有文本都显示在同一个 div 上,我希望它有所不同

jquery - WCF Restful CORS 执行 POST 失败

iphone - iPhone 和 iPod Touch 上为 "security policy error"