Существуют ли передовые методики, которые значительно повысили бы безопасность приложения asp.net, когда Javascript напрямую передает данные из html / формы в веб-службу asp.net/c#, например:
HTML:
<input type="text" id="txtData" />
<input type="button" onclick="SendData()" />
JAVASCRIPT:
function SendData()
{
var userData = document.getElementById('txtData').value;
MyWebservice.DoSomething(userData, SendData_Result);
}
function SendData_Result(result)
{
//handle output displayed to user from 'result'
}
Webservice / ASMX:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class MyWebservice : System.Web.Services.WebService
{
public MyWebservice() { }
[WebMethod]
public string DoSomething(string userInputGoesHere)
{
//how to make sure the user input is valid?
}
}
Например, если www.SomeBadGuysSite.com отправляет XSS, либо ссылаясь на javascript на моем сайте, либо манипулируя им, ИЛИ непосредственно ссылается на сам веб-сервис ...
- как я могу добиться того, чтобы информация поступала с моего сайта, а не с сайта плохого парня или ПК?
- и я не беспокоюсь о том, какие данные находятся в текстовом поле, только чтобы попытаться убедиться, что единственный раз, когда веб-служба может быть вызвана, с моей страницы html / forms.
Примечание. Я использую проверку подлинности с помощью форм, и только авторизованные пользователи могут получить доступ к любым страницам или веб-службам. Однако, если злоумышленник проходит проверку подлинности на моем веб-сайте, но запускает собственный вредоносный код со своего веб-сайта или компьютера, разве мой сайт не считает, что он уже прошел проверку подлинности, и разрешает ли ему отправлять данные в веб-службу?
Мне интересно, могут ли зашифрованные файлы cookie сыграть какую-либо роль в решении этой проблемы безопасности? (и по причинам, не заслуживающим внимания, использование Sessions / SessionState для меня не вариант)