Написание многих тестов является ключевым первым шагом, рад это видеть. Проверьте информацию о своем заявлении, чтобы узнать, не хватает ли вы тестов важных областей кода и убедитесь, что у вас есть интеграционные тесты, которые охватывают ключевые последовательности. Идея состоит в том, чтобы изменить ваши тесты, чтобы уменьшить риск того, что изменение приведет к сбою, видимому пользователю.
Теперь настройте непрерывное тестирование на какой-либо системе.
Установите Gemfile и .ruby-версию, чтобы у вас был конкретный контроль над тем, какие версии всего загружаются. Это не автоматически обновляется, но гарантирует, что у вас есть управление над тем, что вы обновляете. Проверьте как Gemfile, так и Gemfile.lock.
На этом этапе вы можете медленно увеличить номера версий. Не перескакивайте множество номеров версий - обычно лучше обновляться медленно, чтобы вы могли видеть предупреждения об устаревании. Исправьте их, промойте, повторите.
Измените свои валидаторы (ввод), чтобы быть разборчивыми белыми списками («он должен быть такой формы, или я не буду его принимать»). Если вы можете предотвратить попадание плохих данных с в систему, это скорее работает правильно и, как правило, будет сложнее атаковать.
Для обеспечения безопасности рассмотрите возможность добавления безопасных головок и установите CSP так сильно, как вы можете стоять.
Начать добавление некоторых статических анализаторов. Rubocop и Brakeman очень полезны. Вероятно, вам придется настроить Rubocop только для того, чтобы жаловаться на некоторые вещи, а затем медленно увеличивать то, что они сообщают. Добавьте все свои проверки к команде «rake» по умолчанию, чтобы вы могли просто набрать «rake» для запуска статических анализаторов и набора тестов.
Нет никакой магии, независимо от того, какую структуру вы используете. Люди ошибаются, и притворяясь, что это иначе, не полезно.
Вы можете использовать CII Best Practices badge project. Он использует RoR, и я это делаю. В частности, см: * CONTRIBUTING * Security information (assurance case)
От ВОЙСКА: «В целом мы стараемся быть активными для обнаружения и устранения ошибок и уязвимостей, как только возможно, и уменьшить их влияние, когда они случаются и мы. используйте защитный дизайн и стиль кодирования, чтобы уменьшить вероятность ошибок, множество инструментов, которые пытаются обнаружить ошибки на ранней стадии, и автоматический набор тестов со значительным охватом.«
Что именно вы имеете в виду? Охрана? –
Кроме того, добавляются новые функции? –
Я имею в виду упрощение любых возможных сбоев в обслуживании. Сюда относятся вопросы безопасности, время работы/доступность и общее обслуживание. –