Так что я просто наткнулся на огромную дыру в безопасности, я никогда не был в курсе:Как устранить неуверенность отключенных элементов управления ASP.NET, в общем?
обычно работают на жидком, когда я установил Enabled = false
на какого-либо контроля, я бы предположить, что это не позволит мне изменить значение на контроле у всех. Однако, когда клиент удаляет разметку disabled="disabled"
, а также класс aspNetDisabled
, таким образом, отправляя другое значение, ASP.NET примет его, даже если мой элемент управления отключен на стороне сервера.
Пример ASPX:
<asp:TextBox ID="tbUsername" runat="server" CssClass="form-control focus-popover required" MaxLength="32" Enabled="false" Text="test" />
<asp:Button ID="bSave" runat="server" CssClass="bb btn btn-primary btn-block" Text="Submit" OnClick="bSave_Click" />
Пример Code-Behind:
protected void bSave_Click(object sender, EventArgs e)
{
Console.Write(this.tbUsername.Text); // BREAKPOINT HERE
}
После дальнейшего осмотра я обнаружил, что я могу установить ReadOnly = true
, что не сбрасывает значение независимо от того, была опубликована. ReadOnly
не доступен на всех WebControl
с.
Есть ли общий способ принудительно сбросить значение, когда оно отключено? Установка submitdisabledcontrols="false"
на form
не влияет.
Btw, было бы безопасно запросить Enabled
перед чтением значения, или может Enabled
быть изменен клиентом на стороне сервера? То есть if(this.tbUsername.Enabled) obj.Username = this.tbUsername.Text;
безопасен для извлечения данных?
Конечно, правильный ответ, но легче сказать, чем сделать с таким толстым абстракционным слоем, как классический ASP.NET обеспечивает ... удачу OP с этим! ;) – Lucero
Этот ответ верен, это должно быть задачей BLL. Лень пытается снова управлять мной. Дело в том, что я решаю, какие элементы управления редактируются в зависимости от прав доступа пользователя, который обращается к веб-сайту. Мой BLL проверяет значения моего объекта, но не реализует систему разрешений для проверки ввода на основе пользователя, который отправляет объект. Наличие моего BLL, делающего все это, делает его просто ................. настолько тяжелее. – modiX
@modiX, я переключился на ASP.NET MVC, когда это вышло и никогда не оглядывалось назад. Тяжесть, сложность, неудовлетворенность клиентов и т. Д. Веб-форм ASP.NET никогда не была моей чашкой чая и видя, что такие должности просто подтверждают мой выбор. Удачи с исправлением! – Lucero