Веб-фреймворки с открытым исходным кодом: безопасность

Насколько безопасны популярные веб-фреймворки с открытым исходным кодом?

Мне особенно интересны популярные фреймворки, такие как Rails и DJango.

Если я создаю сайт, который будет заниматься интенсивной электронной коммерцией, можно ли использовать такие фреймворки, как DJango и Satchmo?

Скомпрометирована ли безопасность из-за их открытой архитектуры?

Я знаю, что быть OS не значит быть открытым для хакеров, Linux использует превосходный механизм аутентификации, но web - это другая игра.

Что можно сделать в этом отношении?

ОБНОВИТЬ:

Спасибо за ответы, ребята.

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

Я понимаю, что Django и Rails были разработаны с учетом аспектов безопасности, наиболее распространенных форм атак, таких как XSS, Injection и т. Д. (В книге Django есть глава по безопасности).

Я ожидал комментариев от гуру безопасности. Если вы гуру безопасности, вы бы порекомендовали важный сайт, который, вероятно, будет популярен, который будет построен на DJango или Rails?

4 ответа

Решение

Я создал несколько сайтов, используя Django, и один магазин, используя Satchmo. Нет никакой разницы в безопасности между закрытыми и открытыми средами, поскольку вся информация, относящаяся к безопасности, уникальна для вашей установки.

Например, "секретный код" в вашем файле settings.py генерируется уникальным образом при запуске вашего проекта. Вы должны защищать пароли пользователей и защищать свои ключи шифрования, так же, как и на любой платформе.

Что следует отметить в Django, так это то, что все входные данные формы проверены и "помечены как безопасные" в процессе очистки. Вы можете получить доступ к очищенным данным формы через cleaned_data толковый словарь.

Кроме того, все шаблоны являются автоматически экранированными HTML, поэтому риск внедрения атак или межсайтового скриптинга практически равен нулю.

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

Что касается Satchmo, его шлюзы электронной коммерции для PayPal, Visa и т. Д. Принимаются указанными компаниями и используют их API, поэтому они так же безопасны, как и любые другие платежные шлюзы. Естественно, вам нужно использовать зашифрованное соединение HTTPS для осуществления платежей по кредитным картам, но это требуется повсеместно и не имеет ничего общего с используемой платформой.

Многие люди говорят, что безопасность через неизвестность не эффективна. Продукты Microsoft, Adobe Reader и т. Д. Можно привести в качестве доказательства того, что закрытый источник не более эффективен, чем открытый источник, для предотвращения проблем безопасности.

Многие сторонники открытого кода утверждают, что лучший подход - лучший способ борьбы с ошибками, связанными с безопасностью. Однако на самом деле, когда вы имеете дело с небольшими приложениями или менее популярными, как коммерческими, так и с открытым исходным кодом, часто бывает мало глаз. Таким образом, существует реальная опасность того, что какая-то черная шляпа будет искать в коде Google фрагмент кода с дырой в безопасности.

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

Однако, если вы серьезно относитесь к созданию сайта электронной коммерции - вам нужно несколько уровней защиты. Обязательно убедитесь в наличии надлежащего межсетевого экрана и системы защиты от вторжений (IPS/IDS). Вам может потребоваться оплатить услугу хостинга, которая будет предоставлять услуги по обеспечению безопасности и мониторингу в дополнение к хостингу. Помните, что ваши пользователи ваши клиенты! Любое нарушение может быть катастрофическим для бизнеса.

В некоторых ответах говорится только об открытом исходном коде, о закрытом и о безопасности, но так как вы спрашивали о конкретных платформах, я решил прокомментировать то, что знаю о Rails.

Есть функции, которые косвенно дополняют безопасность, и те, которые явно предназначены для реализации безопасности в Rails:

  1. SQL-инъекция. Обычно ActiveRecord рекомендуется обращаться к базе данных в приложениях Rails. При правильном использовании вы избежите проблем с конкатенацией строк, которые могут привести к эксплуатации через внедрение SQL. Это один из самых распространенных методов атаки на веб-приложения.
  2. XSS - Простые в использовании макросы предоставляются для кодирования текста HTML, который вводили пользователи, а также кода для удаления JavaScript, который пользователь мог ввести в поля. Используя их вместе, вы помогаете защитить себя от межсайтовых сценариев, которые приходят и уходят.
  3. Управление файлами cookie. Механизм хранения данных сеанса в Rails по умолчанию отправляет их конечному пользователю в виде файлов cookie. Однако пользователь не может просто изменить эти данные и затем отправить их обратно на сервер, поскольку перед отправкой они подписаны длинным закрытым ключом. Любые измененные данные сеанса будут немедленно очевидны для сервера.
  4. CSRF. Это сложно объяснить, но Rails обеспечивает безопасность с помощью своих форм, чтобы гарантировать, что входящий запрос поступает от формы, которую вы фактически отправили пользователю.

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

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

Скрытие исходного кода не является эффективным способом защиты приложения. Это может работать для определенного программного обеспечения, но для широкого распространения фреймворков люди в конечном итоге собираются выяснить, как все это работает ( http://en.wikipedia.org/wiki/Reverse_engineering)

Существуют крупномасштабные веб-приложения для электронного бизнеса, в которых используется среда с открытым исходным кодом. Если вы знакомы с инструментами электронной коммерции, вы должны знать Shopify, созданный с использованием Ruby on Rails ( http://weblog.rubyonrails.org/2006/6/5/shopify-is-open-for-business)

Они также выпустили ActiveMerchant:

Active Merchant - это извлечение из системы электронной коммерции Shopify. Требования Shopify к простому и унифицированному API для доступа к десяткам различных платежных шлюзов с очень разными внутренними API были главным принципом при разработке библиотеки.

Active Merchant используется в производстве с июня 2006 года и в настоящее время используется в большинстве современных приложений Ruby, которые имеют дело с финансовыми транзакциями.

По моему мнению, безопасность будет, по крайней мере, такой же хорошей, если не лучшей, при использовании такой инфраструктуры, как Rails, чем при использовании собственной структуры. Я не знаю о django, так как никогда не использовал его, но я слышал, что это так же хорошо.

Конечно, вам нужно держать свое приложение в безопасности и не полагаться только на фреймворк!

Другие вопросы по тегам