如何防止/避免暴力攻击AJAX调用ASPX页面

时间:2016-09-16 21:21:54

标签: c# jquery asp.net ajax brute-force

我有一个asp.net Web应用程序(旧的aspx)。

页面(1)显示编号和按钮单击,它向另一个aspx页面(2)发出AJAX请求,并在第1页显示编号并获得响应。如果号码无效,则响应将错误消息作为无效号码。

现在, 可以使用循环查找有效数字通过任何脚本请求2页。 在第1页中,可以通过Developer工具修改编号,并将请求发送到第2页。

这会导致第二页暴力攻击。

第二页可能会被我们的另一个应用程序访问。

是否可以针对此案例实施Anti Forgery Token。 我找不到任何旧ASPX的例子。

在此背景下,请使用任何方法建议如何在第二页上防止暴力攻击。

我的Ajax请求

var data = ({ No: $('#No').text(), xyz: $('#xyz').text()});
        $.ajax({
            url: 'x.aspx?y=z',
            data: Data,
            dataType: 'html',
            async: false,
            type: "POST",
            success: function (data) {
                if (data.startsWith('eRROR')) {
            //Reading and assigning error message to html control
                }
                else {
                    if (data == "Success") {
                        return true;
                    }
                    else {
                //set value to HTML control
                    }
                    return false;
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
            //alert 
                return false;
            }
        });

1 个答案:

答案 0 :(得分:1)

使用GUID而不是简单(顺序?)编号。我猜你在第一页上显示的数字是记录的内部ID,它可能是由你的数据库生成的序列号,很容易猜到。

解决方案是在表中添加GUID列。如果您使用SQL server for DB,那么GUID是一个长的随机字符串,它不是按顺序排列的。

生成GUID后,您应该在第一页上使用GUID而不是id,并将其传递给第二页。第二页必须查找GUID才能找到ID。