Repository navigation
Security ru
English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt
На этой странице описано, как сообщить о проблеме безопасности, и что нужно знать о безопасности, когда приложение передаёт в docxi данные от пользователей.
Пожалуйста, не сообщайте о проблемах безопасности в публичных issue. Вместо этого напишите на адреса для связи по сопровождению проекта, указанные в docxi.gemspec. Укажите версию docxi и коротко опишите, как воспроизвести проблему.
docxi 0.0.x передаёт строки с путями к изображениям в Kernel#open. Kernel#open выполняет строку, которая начинается с |, как команду оболочки, поэтому тот, кто управляет путём к изображению, может выполнять команды на вашем сервере. 0.1.0 открывает файлы через File.open и скачивает URL через URI#open. Ни один из этих методов не выполняет команды.
Текст передавать безопасно. Текст, содержимое таблиц и другие строки записываются как текст XML или значения атрибутов, которые экранирует nokogiri. Пользовательский ввод не может добавить в документ элементы.
С источниками изображений нужна осторожность. add_media принимает:
| Источник | Что делает docxi |
|---|---|
| IO, который вы открыли сами | Читает его |
| Путь к файлу | Читает этот файл с диска вашего сервера |
URL http, https или ftp
|
Скачивает его с вашего сервера |
Если путь выбирает пользователь, в документ может попасть любой читаемый файл вашего сервера, например конфигурация или ключи. Если URL выбирает пользователь, ваш сервер выполнит запрос по нему, а так можно добраться и до внутренних адресов (подделка серверных запросов, SSRF). Передавайте IO, который открыли сами, или разрешайте только известные пути и хосты.
Гиперссылки ведут туда, куда указывает URL. Проверяйте URL от пользователей, прежде чем передавать их в add_hyperlink.
- Версии публикуются из GitHub Actions через доверенную публикацию (trusted publishing) RubyGems, поэтому в репозитории не хранится ни одного ключа API.
- В метаданных гема задан
rubygems_mfa_required, поэтому для публикации с личным ключом API нужна многофакторная аутентификация.
docxi wiki · README · Installation · Troubleshooting · Report an issue · MIT License
Start
Build documents
Help
Project
Links
Languages