Веб-фреймворки с открытым исходным кодом: безопасность
Насколько безопасны популярные веб-фреймворки с открытым исходным кодом?
Мне особенно интересны популярные фреймворки, такие как 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:
- SQL-инъекция. Обычно ActiveRecord рекомендуется обращаться к базе данных в приложениях Rails. При правильном использовании вы избежите проблем с конкатенацией строк, которые могут привести к эксплуатации через внедрение SQL. Это один из самых распространенных методов атаки на веб-приложения.
- XSS - Простые в использовании макросы предоставляются для кодирования текста HTML, который вводили пользователи, а также кода для удаления JavaScript, который пользователь мог ввести в поля. Используя их вместе, вы помогаете защитить себя от межсайтовых сценариев, которые приходят и уходят.
- Управление файлами cookie. Механизм хранения данных сеанса в Rails по умолчанию отправляет их конечному пользователю в виде файлов cookie. Однако пользователь не может просто изменить эти данные и затем отправить их обратно на сервер, поскольку перед отправкой они подписаны длинным закрытым ключом. Любые измененные данные сеанса будут немедленно очевидны для сервера.
- 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, так как никогда не использовал его, но я слышал, что это так же хорошо.
Конечно, вам нужно держать свое приложение в безопасности и не полагаться только на фреймворк!