Расширение (ASP.NET) BoundField

Безопасность является главным беспокойством. Идеально Ваш сервер базы данных должен находиться позади брандмауэра только с портами, требуемыми выполнить открытый доступ к данным. Ваше веб-приложение должно соединяться с сервером базы данных с учетной записью SQL, которая имеет как раз достаточно прав для приложения функционировать и не больше. Например, необходимо удалить права, которые разрешают отбрасывать объектов, и несомненно Вы не должны соединять учетные записи использования, такие как 'sa'.

, Если Вы теряете веб-сервер налету (т.е. полноценное расширение полномочий к правам администратора), худший вариант развития событий - то, что база данных Вашего приложения может быть поставлена под угрозу, но не целый сервер базы данных (как имел бы место, если бы сервер базы данных и веб-сервер были той же машиной). Если Вы зашифровали свои строки соединения с базой данных, и хакер не является достаточно здравым смыслом для дешифрования их тогда все, что Вы потеряли, веб-сервер.

5
задан rball 4 September 2009 в 21:42
поделиться

1 ответ

Непроверено:

public class HighlightBoundField : DataControlField {

    //property to indicate if this field should be highlighted, given the value of this property
    //
    public string HighlightField {
        get {
            object value = ViewState["HighlightField"];

            if (value != null) {
                return Convert.ToString(value);
            }

            return "";
        }

        set {
            ViewState["HighlightField"] = value;
            OnFieldChanged();
        }
    }

    //property to display as text in the cell
    //
    public string DataField {
        get {
            object value = ViewState["DataField"];

            if (value != null) {
                return value.ToString();
            }

            return string.Empty;
        }

        set {
            ViewState["DataField"] = value;

            OnFieldChanged();
        }
    }

    //bound field creation
    //
    protected override DataControlField CreateField() {
        return new BoundField();
    }

    //override the method that is used to populate and format a cell
    //
    public override void InitializeCell(DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex) {
        base.InitializeCell(cell, cellType, rowState, rowIndex);

        //if this celltype is a data row
        //
        if (cellType == DataControlCellType.DataCell && !string.IsNullOrEmpty(HighlightField)) {
            //create label control to display text
            //
            var lblText = new Label();

            //add event listener for when the label is bound
            //
            lblText.DataBinding += new EventHandler(lblText_DataBinding);

            //add label to controls collection
            //
            cell.Controls.Add(lblText);
        }
    }

    void lblText_DataBinding(object sender, EventArgs e) {
        //retrieve data item and set label text
        //
        Label lblText = (Label) sender;
        object dataItem = DataBinder.GetDataItem(lblText.NamingContainer);
        lblText.Text = DataBinder.GetPropertyValue(dataItem, DataField).ToString();

        //check if value should be highlighted
        //
        if (Convert.ToBoolean(DataBinder.GetPropertyValue(dataItem, HighlightField))) {
            lblText.Style.Add("background-color", "yellow");
        }
    }
}
5
ответ дан 14 December 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: