ИИ-инструменты и скрипты
Проверка приложений Streamlit и Gradio
Проверяйте приложения Streamlit и Gradio перед развёртыванием: secrets.toml, который попадёт в коммит git, пользовательский ввод, выводимый как HTML или выполняемый через eval, пути Gradio, открывающие доступ к диску, API-ключи в коде, публичный запуск без входа.
Что вы получите: 1 файл · 58.3 KB · ZIP
Варианты покупкиОписание товара
st.markdown(f"<h2>Notes for {name}</h2>", unsafe_allow_html=True) вставляет на вашу страницу как HTML всё, что вводит посетитель, а demo.launch(share=True, allowed_paths=["/"]) позволяет любому, у кого есть ссылка, скачать любой файл с вашего компьютера. Этот навык находит такие ошибки и другие перечисленные ниже ошибки Streamlit и Gradio до того, как вы развернёте приложение или поделитесь им, и объясняет, как исправить каждую.
Ваш агент запускает сканер для Python-файлов вашего приложения (тех, что импортируют streamlit или gradio), .streamlit/config.toml, secrets.toml, а также Dockerfile, Procfile, compose-файлов и shell-скриптов, которые запускают приложение. Он отслеживает значения, поступающие от посетителей (виджеты ввода, параметры запроса, загруженные файлы, имя вошедшего пользователя, ключи session state, которые заполняют виджеты и история чата, свободные текстовые аргументы обработчиков событий Gradio), через присваивания и внутрь собственных вспомогательных функций файла. Он считает значения Gradio Dropdown, Radio, Slider и Number фиксированным выбором, распознаёт исправления, такие как html.escape, shlex.quote, ast.literal_eval и поиск в константной таблице, учитывает псевдонимы импорта вроде import subprocess as sp, читает ваши файлы .gitignore, чтобы понять, исключён ли secrets.toml из git, и знает настройки Streamlit и Gradio по умолчанию (защита XSRF и CORS включена, st.html очищается, Gradio привязан к 127.0.0.1 со строгим CORS и включённой очисткой чата). Он никогда не запускает ваше приложение и ни к чему не подключается. Результат: BLOCK, REVIEW или NOT FLAGGED, с указанием файла, строки, причины и более безопасного подхода. Секреты никогда не выводятся.
Что проверяется
BLOCK (исправить до выпуска)
- D01: secrets.toml с настоящими ключами или паролями, который не покрыт ни одним правилом .gitignore
- D02: ввод посетителя, выводимый как HTML через unsafe_allow_html=True, st.html с разрешённым JavaScript, st.iframe или устаревший st.components.v1.html
- D03: allowed_paths, set_static_paths или GRADIO_ALLOWED_PATHS в Gradio, включающие корень диска, корень раздела, домашнюю папку, /home, /Users, /root или /etc
- D04: ввод посетителя, попадающий в eval, exec, compile, shell-команду или загрузчик в стиле pickle (pickle, joblib, dill, cloudpickle, pandas.read_pickle и подобные)
- D05: API-ключи и секреты, записанные в коде приложения, config.toml или файлах запуска (форматы ключей провайдеров, случайные на вид значения под «секретными» именами, пароли в URL баз данных)
REVIEW (проверить перед релизом)
- D11: launch(share=True) или server_name="0.0.0.0" в Gradio без auth или auth_dependency
- D12: защита XSRF в Streamlit отключена или её cookie отправляется между сайтами
- D13: enableCORS = false в Streamlit или strict_cors=False в Gradio
- D14: загрузки без ограничения типа (st.file_uploader без type, файловые поля ввода Gradio без file_types)
- D15: подробности ошибок, показываемые посетителям (show_error=True в Gradio, явное значение full или stacktrace для showErrorDetails в Streamlit)
- D16: sanitize_html=False в Gradio для Chatbot или Markdown
- D17: st.secrets, отдельный секрет или целый раздел из него либо окружение процесса (включая getenv для ключа), выводимые на страницу
- D18: пароли для входа, записанные в коде (кортежи auth в Gradio, проверки password == "...", переменные с паролями)
Что входит в комплект
- Сканер (Python 3.9+, только стандартная библиотека)
- Руководство по правилам с причиной, более безопасным подходом и ссылкой на официальную документацию для каждого правила
- Рискованный и безопасный примеры проектов, а также реальный отчёт сканера по рискованному
Ограничения
Сканер читает каждый файл отдельно и отслеживает значения в линейном порядке: значения, передаваемые между модулями, хранящиеся в атрибутах классов или формируемые в ветвлениях, не отслеживаются, обработчики Gradio, заданные как методы класса или через functools.partial, не отслеживаются, а Python-файлы, которые не импортируют ни Streamlit, ни Gradio, не проверяются. Вывод Gradio gr.HTML не проверяется, потому что в документации Gradio не сказано, очищает ли он его. Сканер читает файлы .gitignore, но не историю git, поэтому secrets.toml, закоммиченный до того, как его стали игнорировать, не обнаруживается. Настройки, сделанные в панели хостинга (Streamlit Community Cloud, Hugging Face Spaces), не видны. debug=True в Gradio не попадает в отчёт, потому что эта опция лишь оставляет скрипт работающим. NOT FLAGGED не является гарантией.
Содержимое
Один ZIP-файл с 22 файлами: SKILL.md, сканер в scripts/ (8 файлов Python), references/rules.md (каждое правило с причиной и более безопасным подходом) и examples/ (11 файлов примеров плюс report.md, реальный результат работы сканера на рискованном примере).
Как использовать: Это навык для агента: папка с файлом SKILL.md и скриптами Python, которые может запускать ИИ-агент для программирования, например Claude Code, Cursor или Codex CLI. Распакуйте архив в папку навыков вашего агента (для Claude Code: ~/.claude/skills/), затем попросите агента проверить ваш проект. Скрипты также работают самостоятельно с Python 3.9 или новее, ничего устанавливать не нужно. Они только читают ваши файлы: без доступа к сети, и ничего никуда не отправляется.
Что вы получите
1 файл · 58.3 KB
- streamlit-gradio-app-check-1.0.0.zipZIP · 58.3 KB
ИИ-инструменты и скрипты
Проверка приложений Streamlit и Gradio
Проверяйте приложения Streamlit и Gradio перед развёртыванием: secrets.toml, который попадёт в коммит git, пользовательский ввод, выводимый как HTML или выполняемый через eval, пути Gradio, открывающие доступ к диску, API-ключи в коде, публичный запуск без входа.
Getly открыл загруженные файлы и не нашёл ничего, что помешало бы их открыть. Это не проверка на вирусы и не оценка качества.
Теги
Частые вопросы
Доступ открывается сразу?
Да. Это цифровой товар - скачать его можно сразу после оплаты, прямо из своей библиотеки.
Можно ли использовать в коммерческих проектах?
Да. Коммерческое использование разрешено: в своём бизнесе и в том, что вы продаёте. Перепродавать и распространять сам файл нельзя.
Какие условия возврата?
Запросить возврат можно в течение 30 дней. Если что-то не так, оформите заявку в своём заказе - её рассмотрит команда Getly.
Какие форматы и размеры файлов я получу?
Вы скачаете 1 файл - ZIP - всего 58.3 KB.
Обновления бесплатны?
Да - когда продавец выпускает новую версию, вы можете бесплатно скачать актуальные файлы из своей библиотеки. Последние изменения смотрите в истории версий.
Цена
$5.00



