Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Alex_student
18 / 18 / 8
Регистрация: 10.02.2013
Сообщений: 250
Завершенные тесты: 1
1

Обеспечение безопасности ввода данных

27.07.2014, 13:41. Просмотров 971. Ответов 11
Метки нет (Все метки)

Доброго времени суток, уважаемые форумчане.
Подскажите с таким вопросом. Делаю маленький сайт с возможностью добавления новостей и в качестве текстового редактора подключаю Tinymce. При первом подключении выдало ошибку "Обнаружено потенциально опасное значение Request.Form, полученное от клиента", по данному вопросу чуть покопал форумы где рекомендуется вносить изменения в web.config и т.д., но в итоге использовал следующий атрибут:

C#
1
 [UIHint("tinymce_jquery_full"), AllowHtml].
Вроде все работает все добавляет. Вопрос вот в чем:
Насколько я понимаю все способы разрешающие вводить текст с HTML разметкой это обход безопасности? и все бы ничего пока добавления идут сугубо администратором сайта...но как решить вопрос безопасности в случае разрешения обычным пользователям вводить статьи? и чем может грозить ввод каких либо java script или какого другого кода?
За ранее спасибо)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2014, 13:41
Ответы с готовыми решениями:

Разработать интерфейс ввода данных об абитуриентах
Прошу помощи... Необходимо написать хоть какое нибудь приложение - интерфейс...

Простой пример ввода, сохранения и удаления данных
Здравствуйте, нужен пример веб интерфейса из использованием MVC, в котором...

Как добавить строки для ввода данных в форму без перезагрузки страницы?
Есть страница asp, на которой форма контракта с клиентом, она заполняется,...

Для разработанного класса объектов разработать asp-страницы для ввода данных объекта и передачу на сервер
Для разработанного класса объектов(класс был создан раннее). Нужно разработать...

Создание файла и обеспечение ввода данных
Составьте программу, которая создает файл и обеспечивает ввод данных, вывод...

11
mishau
128 / 126 / 105
Регистрация: 17.03.2009
Сообщений: 359
28.07.2014, 01:10 2
В конфигураторе Tinymce можно фильтровать теги и атрибуты HTML, в том числе тег script. См. valid_elements и extended_valid_elements
1
Alex_student
18 / 18 / 8
Регистрация: 10.02.2013
Сообщений: 250
Завершенные тесты: 1
28.07.2014, 10:40  [ТС] 3
сейчас почитаю, попробую разобраться и что получается запрет ввода <script> позволит в полной мере обезопасить ввод данных?
0
mishau
128 / 126 / 105
Регистрация: 17.03.2009
Сообщений: 359
28.07.2014, 22:43 4
Ну, не в полной, есть еще инъекция SQL, например. Все зависит от, того как будут обрабатываться введенные пользователем данные.
0
Wolfdp
872 / 780 / 204
Регистрация: 15.06.2012
Сообщений: 3,076
Записей в блоге: 1
Завершенные тесты: 1
29.07.2014, 17:08 5
Цитата Сообщение от Alex_student Посмотреть сообщение
и что получается запрет ввода <script> позволит в полной мере обезопасить ввод данных?
object -- можно подключить какую-то флеш-бяку.
frame -- можно подключить сайт с вирусняками/троянами
style + image/div -- можно закрыть весь сайт одной большой картинкой/фоном (в свое время проверено на отлично на одном ресурсе)
</html> -- и вся страничка обрезается (тоже проверенно на практике, но уже по случайности)
<input id="commentTextBox" /> -- при условии что данное записано выше по разметке, в итоге сломает ввод комментария к данной записи (либо другой критичной фичи).

Цитата Сообщение от mishau Посмотреть сообщение
есть еще инъекция SQL
Это ж какой шляпой нужно быть, чтобы запросы генерить в виде текста, а не хранимок/linq?


Вывод: лучше запретить прямую запись на страничку и ввести BB-коды.
1
Alex_student
18 / 18 / 8
Регистрация: 10.02.2013
Сообщений: 250
Завершенные тесты: 1
30.07.2014, 09:32  [ТС] 6
Wolfdp
Спасибо за совет) буду разбираться с этими bb-кодами. а что можете сказать насчет такого средства еще: http://wpl.codeplex.com/. посоветовали на одном форуме.
а как введение bb-кода будет работать с Tinymce? или лучше использовать какой другой текстовый редактор? и еще (наглею походу) может подскажите из своего опыта какой маленький редакторчик можно использовать для формирования сообщений, просто мне кажется, что подключение Tinymce немножко тяжеловат для сообщений и больше подходит для админки...
За ранее спасибо)
0
Wolfdp
872 / 780 / 204
Регистрация: 15.06.2012
Сообщений: 3,076
Записей в блоге: 1
Завершенные тесты: 1
30.07.2014, 14:19 7
Цитата Сообщение от Alex_student Посмотреть сообщение
насчет такого средства еще: http://wpl.codeplex.com/
Что-то не увидел там ВВ-кодов. Посмотрите http://bbcode.codeplex.com/, скорее всего должно подойти, я особо не вчитывался что там к чему.

Цитата Сообщение от Alex_student Посмотреть сообщение
bb-кода будет работать с Tinymce
будет http://www.tinymce.com/tryit/3_x/bbcode.php

Цитата Сообщение от Alex_student Посмотреть сообщение
Tinymce немножко тяжеловат для сообщений и больше подходит для админки
там всё можно настроить, по ходу нужно разбиратся с этим http://www.tinymce.com/wiki.php/Configuration:toolbar

p.s. прикрепил небольшой пробный вариант
p.p.s. На худой конец можно написать и самому, но нужны приличные знания по js и регуляркам (ну или просто хорошо работать со строками как в с#, так и в js). И это ещё тот велосипед и куча времени.
1
Вложения
Тип файла: zip testbb.zip (7.14 Мб, 9 просмотров)
Alex_student
18 / 18 / 8
Регистрация: 10.02.2013
Сообщений: 250
Завершенные тесты: 1
18.08.2014, 11:15  [ТС] 8
Огромное спасибо за ответы и в продолжение темы (возможно совсем глупый вопрос), а если на стадии поступления текста в контроллер производить его кодирование в какой-нибудь формат типа UTF-8 или Base64, а при выводе текста производить декодирование....или это слишком затратный метод и он ничего не даст в плане защиты?
За ранее спасибо)
0
quizzer
180 / 58 / 7
Регистрация: 28.08.2012
Сообщений: 363
18.08.2014, 19:05 9
Цитата Сообщение от Alex_student Посмотреть сообщение
его кодирование в какой-нибудь формат типа UTF-8 или Base64, а при выводе текста производить декодирование....или это слишком затратный метод и он ничего не даст в плане защиты?
кодирование к UTF-8 не имеет никакого отношение, это лишь кодировка текста. Вообще лучше получать и отдавать текст в одной и той же кодировке.
Если у вас действительно какие-то важные данные, то можно применить один из алгоритмов шифрования. Только не понятно, что за кодирование вы хотите сделать? Выше описывалась вроде проблема с javascript, но с кодированием кода в js тут вряд ли Base64 поможет.
Если кодировать текст на стороне представления в js, то смысла тоже особого нет, так как код js все могут посмотреть и понять работу алгоритма.
0
Alex_student
18 / 18 / 8
Регистрация: 10.02.2013
Сообщений: 250
Завершенные тесты: 1
18.08.2014, 20:22  [ТС] 10
Возникла просто мысль (скорее всего что не в полной мере понимаю проблему) что если стоит цель не допустить получение БД какого либо скрипта, то просто кодируем текст и вроде как скрипт виден и не будет)в бд...бред наверное
0
quizzer
180 / 58 / 7
Регистрация: 28.08.2012
Сообщений: 363
18.08.2014, 20:44 11
Alex_student, тут есть различные способы, можно использовать методы для декодирования Html.Encode, Ajax.JavaSciptStringEncode. И также можно использовать специальную библиотеку для этого - AntiXSS Она позволяет декодировать javascript. Правда, по применению не скажу, сам не использовал, но думаю, примеры в сети есть
1
Wolfdp
872 / 780 / 204
Регистрация: 15.06.2012
Сообщений: 3,076
Записей в блоге: 1
Завершенные тесты: 1
19.08.2014, 17:28 12
Цитата Сообщение от Alex_student Посмотреть сообщение
если стоит цель не допустить получение БД какого либо скрипта
Я уже говорил, что
Цитата Сообщение от Wolfdp Посмотреть сообщение
Это ж какой шляпой нужно быть, чтобы запросы генерить в виде текста, а не хранимок/linq?
Самый быстрый вариант -- создать ADO.Net модель и плясать от неё. Придется внезапно подтянуть linq, но в общем там ничего тяжелого в начале. Вариант без linq -- использовать хранимки, которые принимают параметры.
Это дает 100% защиту от всяких "; drop database [NYA]".

Если вы про js, который потом вдруг появиться в комментариях, то bb-code полностью защитит вас от подобного.
1
19.08.2014, 17:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2014, 17:28

Обеспечение защиты от ввода неверных данных с помощью try-catch
Всем привет. Короче такая проблема, задали по программированию одну программу,...

Обойти обеспечение безопасности Windows
Пишу программу для обмена текстовыми сообщениями по локальной сети. Но при...

Обеспечение безопасности приложения - Acegi Security
Я реализовывал перенос настроек на уровень базы данных. К сожалению API...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru