Этот поток SO содержит много хороших обсуждений о защите себя от атак инъекций.
Короче говоря:
- Отфильтруйте входные данные как можно лучше
- Избегайте строк, используя методы, основанные на фреймворке
- Параметризация ваших операторов SQL
В вашем случае вы можете ограничить поле имени небольшим набором символов. Сфера деятельности компании будет более сложной, и вам необходимо учитывать и балансировать потребности ваших пользователей в свободе входа с вашей потребностью в безопасности сайта. Как уже говорили другие, пытаться написать свои собственные методы санитарии сложно и рискованно. Сохраняйте простоту и защищайте себя с помощью своей архитектуры - не полагайтесь на то, что строки «безопасны», даже после очистки.
EDIT:
Чтобы уточнить - если вы пытаетесь создать белый список, сообщество не может раздавать его, поскольку оно полностью зависит от данных, которые вы хотите. Но давайте рассмотрим пример белого списка регулярных выражений, возможно, для имен. Скажем, я в белом списке A-Z и a-z и пробел.
Regex reWhiteList = new Regex("^[A-Za-z ]+$")
Это проверяет, состоит ли вся строка из этих символов. Обратите внимание, что строка с числом, точкой, кавычкой или чем-либо еще НЕ будет соответствовать этому регулярному выражению и, таким образом, не сможет выполнить белый список.
if (reWhiteList.IsMatch(strInput))
// it's ok, proceed to step 2
else
// it's not ok, inform user they've entered invalid characters and try again
Надеюсь, это поможет еще! С именами и названиями компаний вам будет непросто разработать строгий шаблон для проверки, но вы можете составить простой список допустимых символов, как я показал здесь.