Каковы лучшие методы для защиты приложения Sinatra? - PullRequest
7 голосов
/ 16 ноября 2011

Каковы наилучшие методы защиты приложения Sinatra, которое использует множество различных форм и mongodb в качестве базы данных?

Ответы [ 2 ]

12 голосов
/ 16 ноября 2011

Не уверен, что вы ищете. Вот несколько мыслей.

Если вы хотите проверить пользователей вашей системы, я предлагаю использовать аутентификацию, которая работает на уровне Rack, например, Warden. Мало того, что это, вероятно, более надежное решение, чем пользовательское решение для аутентификации, оно работает как промежуточное ПО, поэтому оно в основном прозрачное и может использоваться за пределами Sinatra, если вы решите добавить дополнительное промежуточное ПО, пользовательские приложения Rack или Rails в свой стек Rack.

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

Убедитесь, что пользователи не могут вводить HTML / JS / CSS, который могут видеть другие пользователи, иначе ваш сайт, вероятно, будет уязвим для XSS.

Если возможно, четко определите все возможные входные данные, которые пользователь может выбирать, затем убедитесь, что входные данные, которые вы получаете от пользователей, соответствуют ТОЧНО одному из возможных значений, которые вы определили. Если нет, либо отклоните ввод или выберите правильное значение по умолчанию.

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

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

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

1 голос
/ 19 июня 2017

Формы

Если у вас есть формы, вы обязательно должны использовать токен подлинности, чтобы избежать подделки межсайтовых запросов.Извлеките rack_csrf gem для Sinatra.

Cookies / Sessions

Если у вас включены сессии, так как Sinatra реализует сессии на основе файлов cookie, вы должны проверить encrypted_cookie gem как средство шифрования сеансов Синатры с использованием 256-битного алгоритма AES.

Последнее, но не менее важное: всегда используйте HTTPS

Прочтите этот пост для всестороннего объяснения.

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