Pull to refresh

Comments 11

Например, если подразумевается, что в поле может быть введен только текст, то с помощью Regex выражения укажите диапазон от ^[a-zA-Z]+$

А где ссылка на англоязычный оригинал? Такую чушь русскоязычный автор написать не мог...

UFO just landed and posted this here
А знаки препинания, уайтспейсы и прочий Unicode? Если уж действительно текст, а не идентификатор из цифробукв.
^[а-яА-ЯёЁa-zA-Z0-9]+$

Вы знаете, что это неполный вариант для кириллицы? Например, не хватает некоторых украинских букв. Например, Їжак Микита не сможет зарегистрироваться через такую форму.
public ActionResult EditProfileInfo(int id)
{
    var user = _context.Users.FirstOrDefault(e => e.Id == id);
    if (user.Id != _userIdentity.GetUserId())
    {
      // Редактируем данные
    }
    ....

Как раз-таки в этом случае мы ничего не редактируем.
Да и вообще, если пользователь может редактировать только свой профиль — зачем вообще тут параметр id?
Поясните, пожалуйста строку
Самый простой вариант — это не попадать в ситуацию, когда с HttpPost передается какой-нибудь объект.

А как же передавать тогда?
Делать авторизацию с помощью открытых данных клиента — это уже порочная практика. Свойство IsAdmin в конкретном случае как минимум должно переустанавливаться при каждом запросе (ведь злобный админ мог отобрать у юзера права между запросами). Модель должна должна иметь лишь те поля, которые нужны в конкретной ситуации и передавать ее «насквозь» без валидации, санитайзинга и другой необходимой обработки — неправильно и опасно. И это вина не HttpPostAttribute, а кода экшна и святой веры программиста, что POST — это абсолютно безопасно.

А как же передавать тогда?
Можно маппить на бизнес-модель только нужные поля, потом создавая новую (актуальную) модель, можно строить наследование и разделять input- и output-модели. Суть одна — не доверять вводу пользователя без валидации и понимать, как работает model binding.
UFO just landed and posted this here
Sign up to leave a comment.