Я думаю об использовании Play для крупномасштабного проекта, так, есть ли какая-нибудь проверенная битком платформа для OWASP Top 10? Существуют ли какие-либо проблемы с безопасностью, о которых вы знаете в платформе Play?
Playpramework owasp top 10
Ответ 1
В OWASP Top 10 и Play (некоторая информация здесь):
-
A1: Инъекция
Использует JPA и по умолчанию сохраняет строки
-
A2: Межсайтовый скриптинг (XSS)
Начиная с версии 1.0.1, механизм шаблонов Plays автоматически выполняет строку
-
A3: Сломанная аутентификация и управление сеансом
Воспроизведение без апатии, сеанс не задействован. Печенье защищено криптографией. Хранение данных безопасно в базе данных (пароли) через хеширование зависит от пользователя, а не от фреймворка
-
A4: Небезопасные ссылки на прямые объекты
Опять же, это зависит от того, кто разработчик проверяет доступ к разрешенным ресурсам, а не столько фреймворк
-
A5: Подделка запросов на межсайтовый запрос (CSRF)
Запросы POST позволяют использовать токены аутентификации для предотвращения этого. Конечно, это зависит от разработчика, правильно использующего GET/POST.
-
A6: Конфигурация безопасности
Процесс отчетов об ошибках по умолчанию выглядит безопасным при производстве (утечки следов стека нет). Единственная проблема заключалась бы в том, что запись "поймать все" в маршрутах, но это должно быть прокомментировано в режиме производства
-
A7: небезопасное криптографическое хранилище
Разработчик несет ответственность за шифрование разумной информации в базе данных
-
A8: отказ от ограничения доступа к URL
Разработчик должен реализовать ограничение безопасности (через @Before, как в учебнике), чтобы запретить доступ к запрещенным страницам.
-
A9: Недостаточная защита транспортного уровня
Play поддерживает SSL
-
A10: Неопределенные перенаправления и переадресации
Воспроизвести перенаправление через 302, а не жестко закодированные строки, что должно помешать этому.
TL; DR: В тех частях, которые структура может выполнять всю работу, Play делает это. В тех частях, которые разработчик должен выполнять всю работу, разработчик должен выполнять всю работу. Части, которым требуется 50% каждого, Play дает 50%.
Скажем так: нет причин, по которым вы должны считать Play менее безопасным, чем любая другая среда Java. Во многих случаях вы можете считать его более безопасным. И с Play, являющимся легкостью для разработчиков, безстоящих и REST-инфраструктур, вы получаете меньше шансов испортить это.
Ответ 2
О A3, вам нужно быть осторожным. В Play есть два типа переменных сеанса. Один из них - session()
, который имеет цифровую подпись, а другой flash()
, который не подписан. Кроме того, оба из них хранятся в файлах cookie , что может вызвать проблемы конфиденциальности, если вы решили хранить там конфиденциальные данные.
Также, как и в A7 (криптография), обратите внимание, что Play предлагает удобную библиотеку Crypto
, но ее шифрование использует режим ECB, который снова открывает целое новая группа потенциальных проблем.