Комментарии 11
Например, если подразумевается, что в поле может быть введен только текст, то с помощью Regex выражения укажите диапазон от ^[a-zA-Z]+$
А где ссылка на англоязычный оригинал? Такую чушь русскоязычный автор написать не мог...
НЛО прилетело и опубликовало эту надпись здесь
А знаки препинания, уайтспейсы и прочий Unicode? Если уж действительно текст, а не идентификатор из цифробукв.
^[а-яА-ЯёЁa-zA-Z0-9]+$
Вы знаете, что это неполный вариант для кириллицы? Например, не хватает некоторых украинских букв. Например, Їжак Микита не сможет зарегистрироваться через такую форму.
public ActionResult EditProfileInfo(int id)
{
var user = _context.Users.FirstOrDefault(e => e.Id == id);
if (user.Id != _userIdentity.GetUserId())
{
// Редактируем данные
}
....
Как раз-таки в этом случае мы ничего не редактируем.
Поясните, пожалуйста строку
А как же передавать тогда?
Самый простой вариант — это не попадать в ситуацию, когда с HttpPost передается какой-нибудь объект.
А как же передавать тогда?
Обычно. Если Action контроллера не помечен HttpPost, то трюк не сработает.
Делать авторизацию с помощью открытых данных клиента — это уже порочная практика. Свойство
и понимать, как работает model binding.
IsAdmin
в конкретном случае как минимум должно переустанавливаться при каждом запросе (ведь злобный админ мог отобрать у юзера права между запросами). Модель должна должна иметь лишь те поля, которые нужны в конкретной ситуации и передавать ее «насквозь» без валидации, санитайзинга и другой необходимой обработки — неправильно и опасно. И это вина не HttpPostAttribute
, а кода экшна и святой веры программиста, что POST — это абсолютно безопасно.А как же передавать тогда?Можно маппить на бизнес-модель только нужные поля, потом создавая новую (актуальную) модель, можно строить наследование и разделять input- и output-модели. Суть одна — не доверять вводу пользователя без валидации
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Защита ASP.NET приложений от взлома