我正在开发一个大量使用 ASP.Net WebForms 页面方法的项目,我使用 Ajax 与之交谈。这比用 JavaScript 编写所有代码对我来说非常方便。
然而,保护页面方法成为困扰我的一个问题。我看到我可以通过 Postman 和 Fiddler 访问页面方法,从而使黑客能够使用您的 API。
我的解决方案非常简单,是我偶然发现的。将静态 Cookie 请求添加到页面方法会为任何不是网站的应用程序返回错误。
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public static string GetAnything(object dat)
{
HttpCookie myguid = HttpContext.Current.Request.Cookies.Get(Constants.Session.PreventHacking);
var hackguid = myguid.Value ?? ""; //other page method contents
return "anything";
}
对此方法的邮递员请求将返回:
{
"Message": "There was an error processing the request.",
"StackTrace": "",
"ExceptionType": ""}
虽然在 LocalHost 上会显示更详细的错误。
我知道有些浏览器插件可以通过坐在网站旁边来拦截 API 调用。我没有测试过这个。但是,必须为此构建单独的安全修复程序。一旦我执行一些测试,我会在这里更新。