Безопасность базы данных Sharepoint - внедрение SQL - PullRequest
4 голосов
/ 17 марта 2011

Я разработал пользовательскую веб-часть для SharePoint и обеспокоен ее безопасностью. Веб-часть, по сути, представляет собой структуру викторины, которая начинается с того, что пользователь регистрируется; они просто вводят свое имя и адрес электронной почты. Для успешных тестов результат записывается в список, и эти регистрационные переменные помещаются непосредственно в список.

Должен ли я быть обеспокоен атаками SQL-инъекций? Экранируются ли данные SharePoint до их добавления в список? Или SharePoint использует именованные параметры с подготовленным оператором? Или же это просто дословно?

Спасибо за понимание.

UPDATE

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

Получить пользовательский ввод через стандартный ввод HTML

 output.Write("<div>Please enter your e-mail address</div><div><input type=\"text\" value=\"\" size=\"30\" name=\"takerEmail\"></div>");

Вот как вставляются данные

            using (SPSite siteSuccessWrite = new SPSite("http://www.mycompany.com"))
            {
                using (SPWeb webSuccessWrite = siteSuccessWrite.OpenWeb())
                {
                    SPList insertResults = webSuccessWrite.Lists[resultsList];
                    SPListItem quizEntry = insertResults.Items.Add();

                    quizEntry["firstName"] = firstName;
                    quizEntry["lastName"] = lastName;
                    quizEntry["email"] = email;
                    quizEntry["phone"] = phone;
                    quizEntry["department"] = dept;
                    quizEntry["score"] = score;

                    quizEntry.Update();
                }
            }

Ответы [ 2 ]

5 голосов
/ 17 марта 2011

При использовании объектной модели вам не придется беспокоиться об SQL-инъекции, поскольку Sharepoint обрабатывает это за вас (он использует параметризованные хранимые процедуры внутри).

Вам НЕОБХОДИМО беспокоиться о XSS и подобных вещах, хотя при отображении результатов викторины пользователю / судье, поскольку неэкранированный HTML-код может легко вызывать объектную модель веб-служб SharePoint / клиента и выполнять действия в контексте текущего пользователя. .

1 голос
/ 17 марта 2011

Вы сами пишете SQL?Если нет, я бы проверил это, проводя некоторые собственные атаки с использованием SQL-инъекций.Попробуйте ввести такие данные, как John Smith' --, в поле имени и посмотреть, не окажется ли кавычка и тире в базе данных.Если они этого не делают (или вы вообще не получаете данных), возможно, существует уязвимость SQL-инъекции.(Обратите внимание, что это не исчерпывающий тест, поэтому не надейтесь на него)

Я бы предположил, что SharePoint содержит защиту от внедрения SQL, в противном случае каждое 2-е правительство и крупный корпоративный сайт будут закрыты.(Если подумать, не обращайте внимания на то, что:)

Для атак с использованием межсайтовых сценариев попробуйте некоторые из них здесь: http://ha.ckers.org/xss.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...