C# OpenFileDialog, Немодальный возможный

Защита вашего кода от уязвимостей SQL-инъекций, когда вы используете QueryBuilder, хитрая и тонкая.

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

Вот статья о внедрении SQL в поставщиках контента, в которой приводятся примеры того, как ненадежный контент может вызывать уязвимости внедрения SQL, и более подробно рассматриваются особенности разработки под Android:

https: // solidgeargroup .com / sql-инъекция в контент-провайдерах андроида и как быть защищенным

TL; DR этого:

[ 1112]
  • Проекция: проверяет, существуют ли поля для запроса (имя, размер, формат в примере выше) в таблице, из которой мы хотим получить данные.

    [111 ]
  • Выбор: использовать параметризованные методы запроса.

    • blockquote>

    7
    задан maxfridbe 25 January 2009 в 23:02
    поделиться

    2 ответа

    Нет, OpenFileDialog и SaveFileDialog оба получены из FileDialog, который по сути модален, таким образом (насколько я знаю) нет никакого способа создать немодальную версию любого из них.

    6
    ответ дан 6 December 2019 в 19:43
    поделиться

    Вы можете создать поток, и он будет размещать OpenFileDialog. В примере кода отсутствует какая-либо синхронизация, но он работает.

    public partial class Form1 : Form
    {
        OFDThread ofdThread;
    
        public Form1()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            ofdThread = new OFDThread();
            ofdThread.Show();
        }
    }
    
    public class OFDThread
    {
        private Thread t;
        private DialogResult result;
    
        public OFDThread()
        {
            t = new Thread(new ParameterizedThreadStart(ShowOFD));
            t.SetApartmentState(ApartmentState.STA);
        }
    
        public DialogResult DialogResult { get { return this.result; } }
    
        public void Show()
        {
            t.Start(this);
        }
    
        private void ShowOFD(object o)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            result = ofd.ShowDialog();
        }
    }
    

    С помощью этого кода вы можете добавить что-то, чтобы запускать событие в потоке пользовательского интерфейса (будьте осторожны с вызовом!), Чтобы знать, когда они будут выполнены. Вы можете получить доступ к результату диалогового окна по

    DialogResult a = ofdThread.DialogResult
    

    из потока пользовательского интерфейса.

    6
    ответ дан 6 December 2019 в 19:43
    поделиться
    Другие вопросы по тегам:

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