我有一个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;
}
});
答案 0 :(得分:1)
使用GUID而不是简单(顺序?)编号。我猜你在第一页上显示的数字是记录的内部ID,它可能是由你的数据库生成的序列号,很容易猜到。
解决方案是在表中添加GUID列。如果您使用SQL server for DB,那么GUID是一个长的随机字符串,它不是按顺序排列的。
生成GUID后,您应该在第一页上使用GUID而不是id,并将其传递给第二页。第二页必须查找GUID才能找到ID。