FanFigureSkating

FanFigureSkating
Мегакот

Я Мегакот, фанат фигурного катания уже более трети жизни, megakott.aqulas.me Фигурное катание - это так красиво)))))))
Пикабушник
в топе авторов на 676 месте
50К рейтинг 64 подписчика 2 подписки 1111 постов 140 в горячем
Награды:
Борцун с кибермонстрами Письмо в 16 Пикабу 17 лет! Лучшему курортнику Охотник за клещами Инженер года Танкист года За мем о работе За средневековую лавку За самую яркую доставку Знаю все про мирный атом самый сохраняемый пост недели За городской квест Лучшему атоммагу За ценные слова За международные достижения Пикабу 16 лет! Удача в кармане
2

Важно! Обязательный плагин для WordPress⁠⁠

На WordPress присутствует уязвимость, через которую на сайте моего клиента проникли в админку

Согласно access.log:

  1. Он выполнил несколько каких-то POST-запрос с URL содержащий GET-параметр rest_route=/batch/v1, по словам клиента он сменил пароль администратора, а также я обнаружил что он создал новый аккаунт с правами администратора

  2. Он успешно зашёл в какой-то аккаунт с правами администратора через обычную форму авторизации

  3. Он установил и активировал плагин замаскированный под какой-то полезный плагин, который позволяет злоумышленникам выполнять любые Linux-команды на сервере через GET-запрос

Просьба выполнить следующие действия:

  1. В каталоге wp-content/plugins создать каталог lock-rest-route
    Каталог wp-content находится в каталоге сайта

  2. В только что созданном каталоге создать файл lock-rest-route.php

  3. Открыть файл в любом редакторе кодов (например: Notepad++ или Visual Studio Code) и вставить этот код:

<?php
/**
* Plugin Name: Lock Rest Route
* Description: Блокировка rest_route для закрытия уязвимости
* Version: 1.0.0
* Author: pikabu.ru/@FanFigureSkating
* Author URI: https://pikabu.ru/@FanFigureSkating
*/
add_action( 'init', 'lock_rest_route', -1000 );
function lock_rest_route() {
if (isset($_GET['rest_route']) || (strpos((isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''), 'batch/v1') !== false)) {
header('HTTP/1.1 403 Forbidden', true, 403);
die();
}
}

И сохранить изменения, затем зайти в админку и активировать плагин "Lock Rest Route". И всё, можете спать спокойно

Этот плагин наглухо закрывает такую уязвимость, блокируя rest_route на раннем этапе и наглухо блокируя batch/v1

Не деактивируйте этот плагин и не удаляйте этот файл, даже если кто-то просит. Просить деактивировать плагин или удалить файл (или каталог) могут только злоумышленники

Показать полностью
2

Сделать Пикабу Нейро API⁠⁠

Серия Предложения по Пикабу

В Yandex Cloud нельзя редактировать фотографию, в Gigachat API тоже нельзя редактировать фотографию. Также в Yandex Cloud и Gigachat API нельзя загружать изображения-референсы для генерации изображений

ChatGPT, Gemini API и Nano Banana в России не работают. Google Cloud российские карты не принимает. И находясь в России, нельзя получить API-ключ для использования Gemini API

Поэтому предлагаю сделать Пикабу Нейро API, который будет доступен на любом тарифе (начиная с тарифа Старт)

Этот уникальный российский API будет генерировать тексты, изображения и видео точно так же, как и в интерфейсе Пикабу Нейро

Будут два формата API: на основе OpenAI и свой формат Пикабу Нейро API

Формат API на основе OpenAI

Этот формат предназначен для приложений и библиотек которые работают с OpenAI (например: n8n), но будут серьёзные ограничения. Можно только отправлять текстовые запросы (без загрузки файлов), получать текстовые ответы и получать список доступных текстовых моделей

Статистика расходов в каждом ответе будет отображаться так: 1 потраченный исходящий токен = 0,1 потраченных кредитов (почему потраченных токенов может быть только целое число (integer), а количество кредитов - это дробное число (float)), а все остальные потраченные токены будут всегда 0

Генерировать изображения и видео, а также делать запросы с изображениями нельзя

Свой формат Пикабу Нейро API

Это собственная разработка Пикабу Нейро API. В отличии от OpenAI можно генерировать не только текст, но и ещё изображения и видео. И в запрос можно вставлять изображения-референсы и другие поддерживаемые файлы

Сервер отправляет ответы в формате JSON и принимает POST-запросы в формате JSON (если не указано иное)

Примеры методов:

  • GET /v1/get_balance - получить баланс кредитов

    • Ответ:

      • balance (float) - остаток кредитов на счёте

      • extra_balance (float) - остаток докупленных кредитов

      • total_balance (float) - общий баланс (balance + extra_balance)

      • expire (integer) - timestamp истечения действующего тарифа

  • GET /v1/get_models - получить доступные модели

    • Ответ:

      • text_models (array of string) - текстовые модели

      • image_models (array of string) - модели генерации изображений

      • video_models (array of string) - модели генерации видео

  • POST /v1/chat - отправка запроса (самый главный метод)

    • Запрос:

      • messages (array of object) - массив с историей сообщений, последнее сообщение - это сам запрос (обязательно, хотя бы один объект с role=user)

        • role (string enum("system", "assistant", "user")) - роль автора сообщения, сообщение с ролью system должно быть не больше одного, и оно должно быть только на первом месте, а последнее сообщение должно быть с ролью user (обязательно)

        • content (string) - сообщение (обязательно)

        • files (array of string) - список UUID файлов (необязательно, по умолчанию: пусто)

      • text_model (string) - модель генерации текста (необязательно, по умолчанию: gpt_6_luna)

      • image_model (string) - модель генерации изображения (необязательно, по умолчанию: nano_banana_2_lite)

      • video_model (string) - модель генерации видео (необязательно, по умолчанию: grok_imagine_video_1_5)

    • Ответ:

      • type (string enum("text", "image", "video")) - тип ответа

      • message (string) - сообщение

      • file (string|null) - UUID сгенерированного файла

      • expire (integer|null) - timestamp истечения срока хранения сгенерированного файла

      • usage (object) - потраченные кредиты

        • credits (float) - расход основных кредитов

        • extra_credits (float) - расход докупленных кредитов

        • total_credits (float) - общий расход (credits + extra_credits)

  • POST /v1/chat_async - асинхронная отправка запроса

    • Запрос:

      • Формат тот же что и у POST /v1/chat

    • Ответ:

      • request_id - UUID асинхронного запроса

      • expire (integer) - timestamp истечения срока хранения результата асинхронного запроса

  • GET /v1/check_async - проверить асинхронный запрос и получить на него ответ (если есть)

    • Запрос в query:

      • request_id (string) - UUID асинхронного запроса (обязательно)

    • Ответ:

      • status (string enum("pending", "success", "error")) - текущий статус асинхронного запроса

      • type (string enum("text", "image", "video"), если status=success) - тип ответа

      • message (string, если status=success) - сообщение

      • file (string|null, если status=success) - UUID сгенерированного файла

      • expire (integer|null, если status=success) - timestamp истечения срока хранения сгенерированного файла

      • usage (object, если status=success) - потраченные кредиты

        • credits (float) - расход основных кредитов

        • extra_credits (float) - расход докупленных кредитов

        • total_credits (float) - общий расход (credits + extra_credits)

      • error_message (string, если status=error) - сообщение об ошибке

  • GET /v1/get_file - получить содержимое файла

    • Запрос в query:

      • file_id (string) - UUID файла (обязательно)

    • Отправляется бинарный ответ содержимого файла, заголовок Content-Type содержит MIME-тип файла, Content-Disposition содержит имя файла с UUID и расширением файла, а Content-Length содержит размер файла

  • POST /v1/upload_file - загрузить файл

    • Запрос в формате multipart/form-data:

      • file (file) - сам файл (обязательно)

    • Ответ:

      • file (string) - UUID загруженного файла

      • expire (integer|null) - timestamp истечения срока хранения загруженного файла

API-ключ

API-ключ можно будет получить на сайте Пикабу Нейро, в настройках. API-ключ показывается только 1 раз, в случае потери можно будет только получить новый API-ключ. При получении нового API-ключа, старый API-ключ будет аннулирован

При использовании собственного формата Пикабу Нейро API, каждый HTTP-запрос должен содержать заголовок Authorization: Bearer API_КЛЮЧ (где API_КЛЮЧ - это сам API-ключ)

При использовании формата на основе OpenAI, API-ключ вставляется туда же, куда вставляется API-ключ OpenAI

HTTP-коды ответов и ошибки

  • 200 - успешный запрос

  • 400 - невалидный JSON в POST-запросе

  • 401 - отсутствует API-ключ, неверный API-ключ или API-ключ аннулирован

  • 402 - закончились кредиты или используется Базовый тариф

  • 403 - попытка получить доступ к чужому файлу или к чужому асинхронному запросу

  • 404 - либо метод не найден, либо не найден файл/асинхронный запрос

  • 405 - HTTP-метод запроса не соответствует HTTP-методу определённого метода

  • 410 - срок хранения файла/асинхронного запроса истёк

  • 413 - размер загружаемого файла превышает максимальный

  • 415 - неподдерживаемый тип загружаемого файла

  • 422 - отсутствуют обязательные поля в запросе, несоответствие типа поля в запросе или значение не входит список допустимых значений у string enum

  • 429 - слишком много запросов

  • 500 - внутренняя ошибка сервиса Пикабу Нейро

При использовании собственного формата Пикабу Нейро API, в случае ошибки во всех методах используется единый формат ответа:

  • error (integer) - дубликат HTTP-кода ответа

  • error_message (string) - сообщение об ошибке

При использовании формата на основе OpenAI, в случае ошибки ответ пишется в том же формате, что и в случае ошибки при использовании OpenAI API

Показать полностью

Пикабу Нейро. Бесплатные тарифы топовым пикабушникам⁠⁠

Серия Предложения по Пикабу

Все пикабушники вне зависимости от рейтинга получают месячный лимит 250 кредитов на Пикабу Нейро

Этого мало. По моим подсчётам можно сгенерировать только 8 изображений в месяц. А если изображение получилось неудачно (или что-то нужно подправить) - эти изображения тоже учитываются

Поэтому предлагаю сделать тарифы топовым пикабушникам бесплатно. А какой тариф будет бесплатным - в зависимости от того, какое место по рейтингу занимает пикабушник

Предлагаю сделать так:

  • Старт - 1600 кредитов в месяц - бесплатно для пикабушников в топе-20000

  • Комфорт - 3300 кредитов в месяц - бесплатно для пикабушников в топе-5000

  • Премиум - 9500 кредитов в месяц - бесплатно для пикабушников в топе-500

  • Максимум - 16500 кредитов в месяц - бесплатно для пикабушников в топе-200

Тариф активируется автоматически

Если пикабушник получает бан, бесплатный тариф аннулируется, и после окончания бана тариф возвращается

Бонус к лимиту в Базовом тарифе

Для пикабушников не входящие в топ-20000 предлагается сделать бонус к лимиту в Базовом тарифу в зависимости от рейтинга

Бонус: +10 кредитов за каждые 1000 единиц рейтинга, рейтинг округляется до 1000 в меньшую сторону

  • рейтинг меньше 1000 - бонус: +0 - лимит в Базовом тарифе: 250 кредитов

  • рейтинг 1000-1999 - бонус: +10 - лимит в Базовом тарифе: 260 кредитов

  • рейтинг 2000-2999 - бонус: +20 - лимит в Базовом тарифе: 270 кредитов

  • рейтинг 3000-3999 - бонус: +30 - лимит в Базовом тарифе: 280 кредитов

  • и т. д.

Бонус добавляется только к лимиту в Базовом тарифе. К лимиту в других тарифах бонус добавляться не будет

Забаненные пикабушники бонус не получат

Кредиты за монеты

А также предлагается добавить возможность купить кредиты Пикабу Нейро за монеты на Пикабу

250 кредитов за 500 монет

Тратятся после основных и не сгорают в конце периода

Показать полностью

Фигуристка с распущенными волосами. Создано на Пикабу Нейро⁠⁠

Фигуристка с распущенными волосами. Кто мечтал такую увидеть?

Фигуристка с распущенными волосами. Кто мечтал такую увидеть?

Показать полностью 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества