Вы просто не повторно отображаете входные данные от пользователя, которые поступают через отправку формы или через строку запроса, либо повторно отображаете его непосредственно для этого пользователя, либо сохраняете его в базе данных, которая затем отображает его для других пользователей сайта.
Скажем, у вас есть гиперссылка, подобная этой
/default.aspx?message=%3cscript%3ealert('Hello+world')%3b%3c%2fscript%3e
Что вы делаете не хотите сделать, это
string message = Request.QueryString["message"];
if (!string.IsNullOrEmpty(message))
directlyDisplayedLiteral.Text = message;
Потому что это произойдетв том случае, когда при загрузке страницы пользователь увидит всплывающее окно с сообщением на экране.Все, что создает этот сценарий, - это глупое маленькое окно сообщения, но оно может совершать другие вредоносные действия для ваших пользователей.
Вместо этого вы хотите закодировать ввод перед его отображением, чтобы он стал чем-то безобидным.
string message = Request.QueryString["message"];
if (!string.IsNullOrEmpty(message))
directlyDisplayedLiteral.Text = Server.HtmlEncode(message);
Итак, все, что происходит, это то, что <script>alert('Hello world');</script>
записывается на экран, который на самом деле <script>alert('Hello world');</script>
в HTML.Там нет окна сообщения, на самом деле не выполняется скрипт, это просто мягкий текст на экране.