Чтобы ответить на ваш второй вопрос:
Вам нужно использовать белый список, чтобы не допускать злонамеренного ввода из входящих комментариев.
Проверка запросов .NET Framework отлично справляется с остановкойПолезные нагрузки XSS во входящих запросах POST.Однако он не может препятствовать проникновению в комментарии других вредоносных или вводящих в заблуждение HTML-кодов (тегов изображений, гиперссылок и т. Д.).
Поэтому, если возможно, я бы настроил проверку белого списка на стороне сервера для разрешенных символов.Регулярное выражение должно покрывать это очень хорошо.Вы должны разрешить A-Za-z0-9, пробел и несколько знаков препинания.Если регулярное выражение не соответствует, верните сообщение об ошибке пользователю и остановите транзакцию.Относительно SQL-инъекций: в этом случае я бы разрешил апострофы (если только вы не любите ужасную грамматику в комментариях), но поместите комментарии кода вокруг ваших параметризованных SQL-запросов с эффектом: «Это единственная защита от SQL, поэтому будьте осторожны, когдаизменения «.Также следует заблокировать разрешения учетной записи базы данных, используемой веб-процессом (только чтение / запись, но не права владельца базы данных).Чего я не хотел бы делать, так это пытаться выполнить проверку черного списка на входе, так как это требует много времени для правильной работы (см. Шпаргал XSS RSnake по адресу http://ha.ckers.org/xss.html, чтобы получить представление о количестве вещей, которые вам понадобятсяпредотвратить только для XSS).
Между платформой .NET и вашей собственной проверкой белого списка вы должны быть защищены от атак на основе HTML, таких как XSS и CSRF *.Внедрение SQL будет предотвращено с помощью параметризованных запросов.Если данные комментария касаются каких-либо других ресурсов, вам может потребоваться установить дополнительные элементы управления, но они охватывают атаки, относящиеся к описанной вами форме представления основных данных.
Кроме того, я бы вообще не пытался «очистить» данные.Это очень трудно сделать должным образом, и пользователи (как уже упоминалось выше) ненавидят это, когда их данные изменяются без их разрешения.Это более безопасно и более удобно, чтобы дать пользователю четкое сообщение об ошибке при сбое проверки данных.Если вы разместите их комментарий на странице, чтобы они могли его редактировать, HTML закодирует вывод, чтобы вы не были уязвимы для атаки отраженного XSS.
И, как всегда, OWASP.org (http://www.owasp.org)является хорошим справочником по всем вопросам, связанным с webappsec. Ознакомьтесь с их проектами «Десятка» и «Руководство по развитию».
* CSRF может не касаться вас напрямую, поскольку мошеннические публикации на вашем сайте могут не иметь для вас значения, нопредотвращение XSS имеет побочное преимущество - сохранение полезных нагрузок CSRF, нацеленных на другие сайты, с вашего сайта.