Я работаю над проектом, который интенсивно использует методы страницы 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, сидя рядом с веб-сайтом. Я не проверял это. Однако для этого необходимо создать отдельное исправление безопасности.
Я обновлю здесь, как только выполню некоторые тесты.