Ну, я думаю, вы должны учитывать некоторые ограничения на то, что пользователям разрешено вводить. Вы не хотите нулевых байтов или непечатных символов, не так ли? Даже если вы принимаете больше, чем буквенно-цифровые значения, вы должны решить, какие символы разрешены, и исключить остальные, используя простое регулярное выражение (конечно, с начальным и конечным якорями).
Тогда способ предотвращения XSS - это кодировать значение всякий раз, когда вы его отображаете. Существует множество способов сделать это, но лучше всего, если вы спросите меня, использовать класс AntiXSS Microsoft Web Protection Library . Вы можете закодировать вывод в зависимости от того, визуализируете ли вы его в элементах HTML, атрибутах, JavaScript и т. Д.