Доработка, улучшение системы администрирования CMS Админка Ruby on Rails: шифрование, CSP, gem AdminkaCkeditor
Доработал собственную систему управления контентом сайта (CMS), систему администрирования сайтов, веб-приложений Админка™:
- Полностью отказался от
gem ckeditor, т.к. это слишком перегруженная система, с ненужными в работе механизмами, а мне нужна лишь возможность загрузки изображений в контент-страницу в редакторе CKEditor — поэтому написал собственныйgem AdminkaCkeditor— редактор CKEditor работает в изолированном iframe-песочнице, собственный браузер для загрузки изображений, использует для хранения изображенийActiveStorage, использует таблицы, по формату совместимые сgem ckeditorдля безболезненной замены на всех сайтах.gemполучился простой и надёжный — контроль доступа авторизованного пользователя,CSRF, соблюдениеContent Security Policy, кстати, именно для этого пришлось вынести сам редактор CKEditor в отдельный iframe-песочницу. Хэлперы так же полностью синтаксически совместимы сgem ckeditor. - Написал собственные библиотеки-обёртки для работы с алгоритмами хэширования и шифрования :
bcrypt,RSA,ECDH,AES-256-GCM,Ed25519(описание алгоритмов) — и на стороне сервера:Ruby 4.0.5,Ruby on Rails 8.1.3, и на стороне клиента —JavaScript (ES2022). Написал собственный протокол рукопожатия, основанный на известных и надёжных алгоритмах - организация защищенного шифрованного канала (предполагается, что работа ведётся на полностью открытых каналах передачи данных, где прослушка 100% возможна, не надеемся ни на какойhttps) - система подтверждения "свой-чужой", шифрование. В CMS сейчас пароли не передаются в открытом виде, критичные данные шифруются. Эти библиотеки возможно использовать на любом сайте, веб-приложении, который работает с CMS Админка™. - Убрал старый механизм загрузки файлов и изображений с помощью отправки формы в
iframe, реализовал с помощьюformDataиfetch— система навигацииajax, которая написана уже давно и долгое время работает безупречно, не потребовала больших изменений. - Работа CMS в строгих режимах ограничений и контроля Content Security Policy (CSP). Всё работает в полном соответствии, потому что сразу было аккуратно и разумно написано.
Ruby, Ruby on Rails, JavaScript, Безопасность, Программирование