Я использую базу данных ASP .NET Membership для аутентификации пользователей в веб-приложении.
Пользователи входят в систему, используя свои адреса электронной почты, но что-то еще используется в поле Имя пользователя базы данных.
Итак, в форме входа я выбираю своих пользователей, используя Membership.FindUsersByEmail
Проблема заключается в том, что эта функция использует «LIKE» в SQL и что символы подстановки SQL не экранируются вэтот метод.
Таким образом, использование метода, скажем, a_df@example.com вернет имена пользователей для a_df@example.com и asdf@example.com (из-за того, что подчеркивание рассматривается как подстановочный знак).
Согласно вики, в адресах электронной почты принимаются кавычки,% и множество других символов.
Хотя я мог бы сделать что-то вроде
emailAddr = emailAddr.Replace("_", "[_]").Replace("%", "[%]")...
перед вызовом Членства.FindUsersByEmail, я думаю, что должен быть более чистый способ сделать это.