Last updated: March 12, 2026
This page details every safety and security measure implemented across Toren — including exactly which permissions are requested from X and Google, how API calls are structured, how Cloudflare protects the platform, and how your data and account are secured at every layer.
On this page
Toren is built on the principle that giveaway platforms should be transparent, verifiable, and trustworthy for both the people running giveaways and the people participating in them.
This page explains in plain terms every security and safety measure in place: what permissions we request from third-party platforms, exactly why we need them, how API calls are actually made, and how your data and account are protected at every layer.
When you connect an X account to Toren, you will see a permissions screen from X. Here is a precise breakdown of every scope requested and why.
Read posts your account can see
This scope is required by X's OAuth system when any read-level access is granted. Toren uses it exclusively to confirm the identity of the account you are connecting — it does not read your timeline, private messages, or any posts other than those you explicitly provide (the post URL you paste in when setting up a giveaway).
Read your account information
Used to retrieve your username, display name, and profile picture so Toren can display your account details inside your dashboard. This information is never shared with third parties.
Read your followers and following lists
Required only when a giveaway has a 'must follow' requirement. Toren checks the followers list of the giveaway post's author to verify that participants are following the correct account. Your own following list is never accessed.
Important: Your token is not used for giveaway data fetching
Every API call that fetches replies, likes, reposts, and follower counts for a giveaway is made using Toren's own developer credentials — specifically, Toren's app consumer key and access token stored securely on the server. X sees these requests as originating from Toren's registered developer app, not from your personal account. There is no risk of your account being flagged, rate-limited, or actioned by X as a result of giveaway activity on Toren.
Your X OAuth tokens are stored encrypted in Toren's database and are only used to re-verify your account when you reconnect. They are never exposed in API responses or frontend code.
When you connect a YouTube channel to Toren, you authorise via Google's OAuth 2.0 system. Here is exactly what is requested and why.
YouTube Data API — read-only channel access
Used to confirm you own the YouTube channel associated with the video you are running a giveaway on. Toren reads the channel ID and display name only.
YouTube comments read access
Required to fetch the comment thread on the video you specify as the giveaway source. Toren reads comment text and author information to build the participant pool. Comments are never modified, deleted, or replied to by Toren.
What Toren does not access
Toren does not request access to Gmail, Google Drive, Google Calendar, Google Contacts, or any Google service outside of YouTube Data API read permissions. Toren cannot post to your channel, upload videos, manage subscriptions, or take any write action on your behalf. The OAuth scope is strictly read-only.
Google OAuth tokens are stored encrypted and refreshed automatically using the refresh token provided during the initial authorisation. Tokens are never logged or included in any client-side response.
Toren operates two distinct categories of credentials: platform credentials (Toren's own developer app keys) and user OAuth tokens (issued when you connect your account).
Platform credentials are Toren's registered developer keys on X and Google. All giveaway data fetching — replies, likes, reposts, follower checks, YouTube comments — is performed using these platform credentials. They are stored as server-side environment variables, never exposed to the browser, and never transmitted over the network except in signed API requests to the respective platforms.
User OAuth tokens are used exclusively for the account verification step during setup. Once your account is connected and verified, Toren relies on its platform credentials for all ongoing giveaway operations. Your personal token sits at rest, encrypted, and is only refreshed when you explicitly reconnect or when Toren needs to re-confirm account ownership.
This design ensures that even if a user's account token were somehow compromised, it would have no effect on the operation of any live giveaway — because the giveaway data pipeline does not use it.
All traffic to torenhub.com is routed through Cloudflare's global network, providing multiple layers of protection before any request reaches Toren's servers.
DDoS Protection
Cloudflare automatically detects and absorbs distributed denial-of-service attacks at the network and application layers, keeping the platform available even under large-scale attack traffic. Protection activates without any manual intervention.
Web Application Firewall (WAF)
Cloudflare's WAF inspects all incoming HTTP requests and blocks known attack patterns including SQL injection, cross-site scripting (XSS), remote code execution, and other OWASP Top 10 threats before they reach the application.
Bot Management
Toren uses Cloudflare's bot detection to distinguish between legitimate users and automated scrapers or abusive bots. This protects giveaway integrity by preventing bulk automated entries and credential stuffing attacks.
Rate Limiting
Cloudflare enforces rate limits on API endpoints to prevent abuse. Endpoints that perform sensitive operations (authentication, winner generation, account management) are subject to stricter limits that block excessive automated requests.
SSL/TLS Encryption
All traffic between your browser and Cloudflare, and between Cloudflare and Toren's origin servers, is encrypted using TLS 1.3. Cloudflare enforces HTTPS-only access — plain HTTP requests are automatically redirected.
IP Reputation & Threat Intelligence
Cloudflare cross-references every request's IP address against continuously updated threat intelligence feeds. Requests from known malicious IPs, TOR exit nodes, and botnet infrastructure are challenged or blocked automatically.
Global CDN
Static assets are distributed across Cloudflare's global edge network, reducing latency and ensuring the platform remains fast and available worldwide regardless of where a giveaway's audience is located.
All data stored by Toren is hosted on Supabase, which runs on top of AWS infrastructure. Data at rest is encrypted using AES-256. Data in transit between Toren's application servers, Cloudflare, and Supabase is encrypted using TLS 1.3.
OAuth access tokens and refresh tokens are stored in encrypted columns. They are never returned in any API response, never logged in server logs, and are only decrypted server-side at the moment they are needed for a specific operation.
Passwords are never stored in plain text. Toren uses Supabase Auth for all authentication, which implements bcrypt hashing with a cost factor that makes brute-force attacks computationally infeasible.
Giveaway participant data (usernames, comment text, like/repost status) is stored only for the duration of the giveaway and winner selection process. It is associated with the giveaway owner's account and is not shared with other users or third parties.
Every database table in Toren is protected by Supabase Row-Level Security policies. RLS is a database-level enforcement mechanism — it is not dependent on application code, which means it cannot be bypassed even if there were a bug in Toren's API layer.
RLS policies ensure that each user can only read and write their own records. A user querying their giveaways, connected accounts, or winner records will never see data belonging to another user, regardless of how the query is constructed.
Administrative operations that legitimately require cross-user access (such as platform-wide analytics or support functions) are performed exclusively via a service-role client that operates outside of RLS, and only from authenticated, server-side API routes — never from the browser.
All sensitive API routes verify the authenticated user's identity via Supabase's admin client before executing any database operation, ensuring tokens cannot be spoofed or replayed to gain access to another user's data.
Toren's winner selection process is designed to be cryptographically verifiable and tamper-evident. Every draw is recorded with a generation ID, a timestamp, the full set of eligibility criteria applied, the total participant count, the eligible participant count, and the selection method.
Winners are selected using a cryptographically seeded Fisher-Yates shuffle applied to the eligible participant pool. The shuffle is performed server-side with no client influence over the randomisation, ensuring results cannot be manipulated by refreshing or re-requesting the generation endpoint.
Every winner generation event is written to an immutable winner history table alongside the active winner records. If a re-roll is performed, the previous draw is archived with a replacement timestamp before the new draw is recorded — providing a full chain of custody for every winner selection event.
Fairness proofs are available on each giveaway's public winner page, allowing anyone — including participants — to inspect the seed, hash, draw logs, and total entry counts used for their specific draw.
Toren uses Supabase Auth with the PKCE (Proof Key for Code Exchange) flow for all OAuth sign-ins including X and Google. PKCE prevents authorisation code interception attacks by binding the code exchange to a cryptographic verifier generated at the start of the flow.
Session tokens are short-lived access tokens (1 hour by default) backed by refresh tokens. Toren's client always fetches a fresh access token immediately before making sensitive API calls, ensuring stale tokens are never used for privileged operations.
Logout invalidates the session server-side via Supabase Auth. Connected account tokens can be revoked at any time from the dashboard's account management section — this immediately removes the stored token from Toren's database and triggers revocation requests to the respective platform.
Toren does not implement 'remember me' functionality that stores long-lived credentials in insecure browser storage. Session state is managed exclusively through Supabase Auth's secure cookie and token infrastructure.
If you discover a security vulnerability in Toren, please report it responsibly by emailing toren@torenhub.com with the subject line 'Security Disclosure'.
Include a description of the vulnerability, the steps required to reproduce it, and the potential impact. We will acknowledge your report within 24 hours and provide a timeline for resolution.
We ask that you do not publicly disclose the vulnerability until we have had a reasonable opportunity to investigate and address it. We take all security reports seriously and will work promptly to resolve confirmed vulnerabilities.
If you have questions about any of the policies described here, want to understand a specific permission in more detail, or have a security concern to report, please reach out:
Your X token is never used to fetch giveaway data
Google OAuth is strictly read-only
All traffic is protected by Cloudflare
Database access is enforced by Row-Level Security
All tokens and secrets are encrypted at rest
TLS 1.3 encrypts all data in transit
Every winner draw produces a full audit trail
PKCE flow protects all OAuth sign-ins
Save a copy of this document for your records