Segurança cognitiva!

Onny opera como um middleware de segurança inteligente. Utilizamos Fingerprinting de Hardware e análise comportamental para proteger sua comunidade antes mesmo do usuário entrar.

Brasil
Sentinel diz:

Olá, desenvolvedor(a)! Minha missão é proteger sua comunidade do tráfego indesejado, como bots e raids, em questão de milissegundos. Analiso o comportamento, GPU do usuário e a reputação do IP para garantir que apenas humanos de verdade tenham acesso à sua comunidade.

Paths & Atualizações

Mantenha-se atualizado(a) com as últimas mudanças na arquitetura Onny. Cada release traz melhorias de performance, novos recursos de segurança e refinamentos na inteligência artificial Sentinel.

Autenticação OAuth2

Utilizamos o padrão OAuth2 (RFC 6749) para garantir autenticação segura e confiável. Os tokens de acesso são efêmeros, criptografados e possuem tempo de vida reduzido, minimizando riscos em caso de interceptação. Esse modelo assegura controle rigoroso de permissões, proteção contra acessos não autorizados e uma integração segura entre aplicações e serviços.

01

Obtenha suas credenciais!

Gere suas credenciais para autenticação diretamente no painel administrativo. Com elas você poderá integrar-se à plataforma com total controle e segurança.

02

Redirecionamento!

Direcione o usuário para o fluxo de autorização segura. Esse processo garante que o acesso seja feito de maneira confiável!

Rate Limits & Proteção

Aplicamos limites inteligentes de requisições para garantir a estabilidade e a segurança da sua aplicação. Essas camadas de proteção atuam de forma contínua para identificar e bloquear tentativas de força bruta, uso abusivo da API e comportamentos suspeitos, evitando sobrecarga no sistema e acessos mal-intencionados. Assim, sua infraestrutura permanece estável, segura e disponível apenas para quem realmente precisa.

Trust Score

O cálculo exato não é exposto para reduzir risco de engenharia reversa.

Cada sessão analisada recebe um Trust Score dinâmico, que representa o nível de confiança do acesso em tempo real. Ele é calculado a partir de múltiplos vetores técnicos e comportamentais — como fingerprinting de hardware, ambiente de execução, padrões de interação humana e sinais de rede. Pontuações mais baixas podem acionar verificações adicionais, limitações temporárias ou bloqueios automáticos.

Ações preventivas e bloqueios

Para garantir segurança sem comprometer a experiência do usuário, utilizamos três tipos de ações preventivas, aplicadas de forma proporcional conforme o nível de risco detectado.

Tipo O que significa? Quando acontece?
TEMPORÁRIA Bloqueio temporário por comportamento abusivo. Disparado após múltiplas falhas consecutivas, tentativas de força bruta ou automações repetidas em curto intervalo de tempo.
COMUNIDADE Punição aplicada por um servidor específico. Quando você recebe uma punição em um servidor integrado à Onny, esse bloqueio impede o retorno do usuário ao mesmo servidor, mesmo quando são utilizadas outras contas.
GLOBAL Bloqueio total da identidade ou da rede. Aplicado apenas em cenários extremos, como ataques massivos coordenados ou tentativas avançadas de burlar o sistema. Nesse estado, todas as contas associadas à identidade ou rede são impedidas de acessar qualquer servidor protegido pela Onny.

Status atual: Nenhuma conta ativa com bloqueio global.

Privacidade & LGPD

A Sentinel coleta apenas sinais técnicos mínimos necessários para validação anti-raid (ex.: dados de hardware, ambiente e rede). Não lemos mensagens privadas, não acessamos dados sensíveis e não coletamos senhas. Todo o tráfego é protegido e processado com foco em segurança e conformidade.

Brasil
Sentinel alerta:

Eu aprendo e memorizo padrões de comportamento. Se um IP falhar repetidamente nas verificações ou tentar burlar o sistema, aplico automaticamente um bloqueio temporário de alguns minutos.

Essa medida impede que scripts de raid testem múltiplas combinações, protegendo sua comunidade contra abusos e tentativas automatizadas de ataque.

Endpoint Limite Janela Ação
/gatekeeper 3 tentativas 15 min Block IP
/public/guilds 100 reqs 1 min Throttle

Sentinel AI: Como funciona?

O coração da Onny é a Sentinel AI, uma rede neural leve desenvolvida internamente pela nossa equipe e utilizada exclusivamente dentro da própria infraestrutura da Onny. Ela opera na borda (Edge), analisando vetores de hardware em tempo real para atribuir um Trust Score que determina o nível de confiança do acesso.

Análise Vetorial
GPU: Adreno 660 Hash Valid — Touch: 5 points

Análise invisível e discreta!

Sentinel realiza verificações silenciosas (PoW) diretamente no navegador, identificando se o ambiente é real ou simulado — como em casos de Puppeteer ou Selenium.

  • Fingerprinting! Criamos uma assinatura única baseada no hardware gráfico do usuário, aumentando a precisão na identificação.
  • Blocklist automática! Bloqueamos automaticamente tráfego originado de datacenters como AWS, Google Cloud e DigitalOcean.
Brasil
Sentinel diz:

Uma dica para você: Navegadores focados em privacidade (como Firefox com resistFingerprinting) recebem tratamento especial na minha matriz de risco. Usuários legítimos não são punidos por se protegerem!

Headless Detection

Identificamos navegadores que operam sem interface gráfica, comumente utilizados por bots e automações.

Alto Risco
Hardware Concurrency

Analisamos a quantidade de núcleos de CPU e a memória RAM disponíveis no dispositivo, utilizando esses dados como indicadores do ambiente.

Médio Risco
Human Interaction

Observamos padrões como curvatura do movimento do mouse e eventos de toque. Isso ajuda a identificar com precisão se a interação é humana.

Baixo Risco

Integração (Guild Ban & Unban)

A Onny expõe endpoints de moderação para sincronizar punições do seu bot com a nossa base de segurança. Para integrar, você precisa de uma onny-api-key e enviar as requisições com o header x-api-key.

01

O que você precisa?

Sua onny-api-key ativa e os IDs do servidor e usuário. Como boas práticas recomendamos armazenar tudo em variáveis de ambiente.

02

Como autenticar?

Envie o header x-api-key em todas as requisições. Sem isso, a API retorna erro de autenticação e não realizará a sincronização das punições.

client_setup.js
import axios from "axios";

const api = axios.create({
  baseURL: process.env.API_URL_SECURITY || "https://security.onny.space",
  headers: { "x-api-key": process.env.API_KEY_SECURITY },
});
Sentinel
Sentinel diz:

Você pode estar se perguntando se é necessário ter um aplicativo próprio para utilizar nossa plataforma.

A resposta é não. Você pode usar a Onny diretamente, sem precisar criar um app do zero. Disponibilizamos comandos e integrações prontas que permitem utilizar todas as funcionalidades da plataforma de forma simples e segura. Ao longo desta documentação, vou te explicando como essas integrações funcionam, quais comandos você deve usar no nosso bot e como você pode adotá-las no seu fluxo.

Ban (Guild)

Registra o banimento do usuário no escopo da comunidade, sincronizando a punição com a Sentinel. Isso ajuda a manter histórico, detectar reincidência e aplicar regras de reputação com mais precisão.

POST /api/v1/guild/:guildId/ban
POST https://security.onny.space/api/v1/guild/123456789012345678/ban
x-api-key: YOUR_API_KEY
Content-Type: application/json
Payload JSON
{
  "userId": "USER_ID",
  "username": "username",
  "moderatorId": "MODERATOR_ID",
  "reason": "Motivo do ban"
}
curl -X POST "https://security.onny.space/api/v1/guild/123456789012345678/ban" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "userId": "USER_ID",
    "username": "username",
    "moderatorId": "MODERATOR_ID",
    "reason": "Motivo do ban"
  }'
import axios from "axios";

const api = axios.create({
  baseURL: "https://security.onny.space",
  headers: { "x-api-key": process.env.API_KEY_SECURITY },
});

await api.post(`/api/v1/guild/${guildId}/ban`, {
  userId,
  username,
  moderatorId,
  reason
});
import os
import requests

base_url = "https://security.onny.space"
api_key = os.getenv("API_KEY_SECURITY")
guild_id = "123456789012345678"

payload = {
  "userId": "USER_ID",
  "username": "username",
  "moderatorId": "MODERATOR_ID",
  "reason": "Motivo do ban"
}

r = requests.post(
  f"{base_url}/api/v1/guild/{guild_id}/ban",
  json=payload,
  headers={"x-api-key": api_key}
)

print(r.status_code, r.text)
import java.net.URI;
import java.net.http.*;

public class OnnyBanExample {
  public static void main(String[] args) throws Exception {
    String apiKey = System.getenv("API_KEY_SECURITY");
    String guildId = "123456789012345678";

    String json = "{\"userId\":\"USER_ID\",\"username\":\"username\",\"moderatorId\":\"MODERATOR_ID\",\"reason\":\"Motivo do ban\"}";

    HttpRequest req = HttpRequest.newBuilder()
      .uri(URI.create("https://security.onny.space/api/v1/guild/" + guildId + "/ban"))
      .header("x-api-key", apiKey)
      .header("Content-Type", "application/json")
      .POST(HttpRequest.BodyPublishers.ofString(json))
      .build();

    HttpClient client = HttpClient.newHttpClient();
    HttpResponse res = client.send(req, HttpResponse.BodyHandlers.ofString());
    System.out.println(res.statusCode() + " " + res.body());
  }
}
using System.Net.Http;
using System.Text;
using System.Text.Json;

var apiKey = Environment.GetEnvironmentVariable("API_KEY_SECURITY");
var guildId = "123456789012345678";

var payload = new {
  userId = "USER_ID",
  username = "username",
  moderatorId = "MODERATOR_ID",
  reason = "Motivo do ban"
};

using var http = new HttpClient();
http.DefaultRequestHeaders.Add("x-api-key", apiKey);

var body = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json");
var res = await http.PostAsync($"https://security.onny.space/api/v1/guild/{guildId}/ban", body);

Console.WriteLine($"{(int)res.StatusCode} {await res.Content.ReadAsStringAsync()}");
Sentinel
Sentinel diz:

Você pode usar o comando direto no app da Onny:
/security ban @user [reason]

Ao executar esse comando, o bot não apenas aplica o banimento no servidor, mas também sincroniza automaticamente essa ação com a plataforma Onny. Isso garante que o histórico de punições seja atualizado em tempo real, ajudando a manter a segurança e a integridade da sua comunidade.

Unban (Guild)

Remove o banimento do usuário no escopo da comunidade, sincronizando a remoção da punição com a Sentinel. Utilize esse endpoint ao desbanir via moderação para manter o histórico e o estado de segurança sempre atualizados.

POST /api/v1/guild/:guildId/unban
POST https://security.onny.space/api/v1/guild/123456789012345678/unban
x-api-key: YOUR_API_KEY
Content-Type: application/json
Payload JSON
{
  "userId": "USER_ID",
  "moderatorId": "MODERATOR_ID"
}
curl -X POST "https://security.onny.space/api/v1/guild/123456789012345678/unban" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "userId": "USER_ID",
    "moderatorId": "MODERATOR_ID"
  }'
import axios from "axios";

const api = axios.create({
  baseURL: "https://security.onny.space",
  headers: { "x-api-key": process.env.API_KEY_SECURITY },
});

await api.post(`/api/v1/guild/${guildId}/unban`, {
  userId,
  moderatorId
});
import os
import requests

base_url = "https://security.onny.space"
api_key = os.getenv("API_KEY_SECURITY")
guild_id = "123456789012345678"

payload = {
  "userId": "USER_ID",
  "moderatorId": "MODERATOR_ID"
}

r = requests.post(
  f"{base_url}/api/v1/guild/{guild_id}/unban",
  json=payload,
  headers={"x-api-key": api_key}
)

print(r.status_code, r.text)
import java.net.URI;
import java.net.http.*;

public class OnnyUnbanExample {
  public static void main(String[] args) throws Exception {
    String apiKey = System.getenv("API_KEY_SECURITY");
    String guildId = "123456789012345678";

    String json = "{\"userId\":\"USER_ID\",\"moderatorId\":\"MODERATOR_ID\"}";

    HttpRequest req = HttpRequest.newBuilder()
      .uri(URI.create("https://security.onny.space/api/v1/guild/" + guildId + "/unban"))
      .header("x-api-key", apiKey)
      .header("Content-Type", "application/json")
      .POST(HttpRequest.BodyPublishers.ofString(json))
      .build();

    HttpClient client = HttpClient.newHttpClient();
    HttpResponse res = client.send(req, HttpResponse.BodyHandlers.ofString());
    System.out.println(res.statusCode() + " " + res.body());
  }
}
using System.Net.Http;
using System.Text;
using System.Text.Json;

var apiKey = Environment.GetEnvironmentVariable("API_KEY_SECURITY");
var guildId = "123456789012345678";

var payload = new {
  userId = "USER_ID",
  moderatorId = "MODERATOR_ID"
};

using var http = new HttpClient();
http.DefaultRequestHeaders.Add("x-api-key", apiKey);

var body = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json");
var res = await http.PostAsync($"https://security.onny.space/api/v1/guild/{guildId}/unban", body);

Console.WriteLine($"{(int)res.StatusCode} {await res.Content.ReadAsStringAsync()}");
Sentinel
Sentinel diz:

Você pode usar o comando direto no app da Onny:
/security unban @user

Ao executar esse comando, o bot remove o banimento do usuário no servidor e sincroniza automaticamente essa ação com a plataforma Onny. Isso garante que o histórico de punições seja atualizado em tempo real, mantendo a segurança, a consistência e a integridade da sua comunidade.

Integração Riot Account

A integração com a Riot Games permite que a Onny sincronize dados de ranking e status (Valorant) diretamente do perfil do usuário. Essa verificação é feita através das Conexões do Discord, garantindo que a conta vinculada seja legítima e pertença ao usuário.

01

Vincule no Discord

O usuário deve ir em Configurações de Usuário > Conexões no Discord e adicionar sua conta Riot Games. É essencial que a opção "Exibir no perfil" esteja marcada.

02

Sincronização

Ao solicitar a integração via Onny, nosso sistema verifica as conexões públicas do perfil (via OAuth2 Scope: connections). Se a conta Riot for encontrada, os dados de ranking (Valorant) são sincronizados com seu Application Shard.

Sync Flow
OAUTH2
GET /oauth2/authorize?scope=connections
? Discord Auth
? Callback: /integration/valorant
? Sync: Application Shard
Sentinel
Sentinel diz:

Essa integração é passiva! Não pedimos login e senha da Riot. Apenas lemos o que o usuário já conectou publicamente no Discord. Isso garante máxima segurança e privacidade, pois não tocamos em credenciais.