как безопасно передать параметр в linq в sql - PullRequest
2 голосов
/ 08 апреля 2010

Если я хочу получить пользователя с адресом электронной почты 'me@example.com', как мне передать его в качестве параметра в linq?

т.е..

var a = from u in Users
        where u.Email = @email
        Select u;

Так что это будет использоваться в моем методе:

public static GetuserByEmail(string email)

Я просто передаю переменную или?

Ответы [ 2 ]

8 голосов
/ 08 апреля 2010

Linq To SQL автоматически обрабатывает защиту от SQL-инъекций. Безопасно передавать параметр в том виде, как он есть у пользователя, если вас беспокоит SQL-инъекция.

Он автоматически параметризует передаваемые вами параметры и очищает их.

Если вы беспокоитесь о XSS, то вы можете Html.Encode() выводить, чтобы убедиться, что он безопасно передан обратно в интерфейс.

public User GetUserByEmail(string email) 
{
    User a = (from u in db.Users
        where u.Email == email
        select u).Single();
    return a;
}

В настоящее время я не нахожусь перед IDE, так что код может быть не полностью синтетически корректным.

0 голосов
/ 08 апреля 2010
var a = from u in Users
    where u.Email == email
    select u;

Будет отлично работать (LINQ to SQL будет генерировать параметризованный SQL-запрос)

PS: вам нужно два '=' для оператора равенства

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...