Krótki link to nieprzezroczyste przekierowanie: odbiorca nie widzi, dokąd prowadzi, zanim kliknie. Ta nieprzezroczystość jest istotą produktu, a zarazem powodem, dla którego słabo prowadzony skracacz staje się narzędziem nadużyć. Jeśli go oceniasz, sprawdź dziesięć zabezpieczeń i o każdą odpowiedź poproś na piśmie: skanowanie adresów docelowych, podpisane webhooki, stopniowane limity żądań, hashowane klucze API, hasła do linków, limity wygasania, log audytu, listy dozwolonych IP, filtrowanie botów i SSO. Poniżej przy każdym punkcie znajdziesz pytanie do dostawcy i opis wdrożenia w Elido, zweryfikowany z naszym kodem na dzień 2026-10-24. Tam, gdzie czegoś brakuje, piszę o tym wprost.
Model zagrożeń
W infrastrukturze linków wciąż powtarzają się cztery rodzaje nadużyć.
Phishing i malware. Krótki link wygląda tak samo, czy prowadzi na stronę docelową, czy do formularza wyłudzającego dane logowania. Utworzenie stu linków zajmuje sekundy; sprzątanie po ich rozesłaniu trwa tygodnie.
Wycieki kluczy API. Klucze trafiają do JavaScriptu po stronie klienta, publicznych repozytoriów i logów budowania. Jeśli dostawca przechowuje je jawnym tekstem, jeden wyciek bazy odsłania wszystkich klientów.
Zawyżanie kliknięć przez boty. Monitory dostępności, pobieracze podglądów linków i crawlery podążają za krótkimi linkami. Bez filtrowania zniekształcają wyniki kampanii i wszelkie rozliczenia oparte na wolumenie.
Masowe nadużycia przekierowań. Jedna przejęta przestrzeń robocza z nieograniczonym dostępem do API może tworzyć dziesiątki tysięcy linków na godzinę i zużywać reputację domen platformy na cudzą kampanię phishingową.
Dziesięć zabezpieczeń
Przy każdym zabezpieczeniu podajemy pytanie do dostawcy i odpowiedź Elido.
1. Skanowanie adresów docelowych przy tworzeniu i później
Sprawdzanie tylko przy tworzeniu pomija adresy, które pierwszego dnia są czyste, a trzydziestego trafiają na listę. Potrzebujesz zarówno sprawdzenia synchronicznego, jak i zaplanowanego ponownego skanowania.
Url-scanner w Elido rozsyła adres docelowy równolegle do maksymalnie pięciu źródeł: Google Safe Browsing v4, PhishTank, URLhaus, SURBL oraz własnej heurystyki struktury URL (heurystyka oznacza hosty xn--, dzięki czemu wychwytywana jest domena podszywająca się metodą homografów). To, które źródła działają, zależy od kluczy wdrożenia i polityki administratora. Wynik łączny to maksimum ze wszystkich źródeł: 80 lub więcej jest blokowane, 40-79 to podejrzane, poniżej 40 to czyste. Ścieżka tworzenia daje skanowi budżet 250 ms. Zablokowane adresy dostają 403 destination_blocked. Podejrzane trafiają do kolejki głębszego skanu asynchronicznego, z wyjątkiem zupełnie nowych darmowych przestrzeni roboczych, gdzie wynik podejrzany jest odrzucany od razu.
Jeden kompromis, o którym warto wiedzieć: jeśli skaner nie działa lub jest zbyt wolny, tworzenie linku przebiega dalej, a link dostaje oznaczenie nieznany do późniejszego ponownego skanu. Wybraliśmy tu dostępność zamiast twardej blokady.
2. Webhooki podpisane razem ze znacznikiem czasu
Niepodpisane webhooki nie pozwalają odróżnić dostawcy od kogoś, kto znalazł adres Twojego endpointu. Podpisuj znacznik czasu razem z treścią, bo inaczej przechwycone ładunki można odtwarzać w nieskończoność.
Nasz worker dostarczania wysyła v1=HMAC-SHA256(secret, "<unix_timestamp>.<body>") w X-Elido-Signature (z aliasem X-Webhook-Signature) wraz z X-Webhook-Timestamp. Podczas rotacji sekretu wysyła też X-Elido-Signature-Previous do końca okresu karencji. Format v1= będzie znajomy, jeśli weryfikowałeś webhooki Stripe. Odrzucanie nieaktualnych znaczników czasu należy do odbiorcy.
3. Limity żądań na przestrzeń roboczą, zależne od planu
Same limity na IP zawodzą wobec rotujących adresów, więc jednostką wiążącą powinna być przestrzeń robocza. API utrzymuje token bucket na przestrzeń roboczą, dobrany do planu (free, paid, business), i zwraca 429 z X-RateLimit-Scope: workspace. Jeśli sprawdzenie poziomu planu się nie powiedzie, system wraca do poziomu free. Nowe darmowe przestrzenie robocze przez pierwsze 24 godziny są w poziomie "incubator": domyślnie 10 linków dziennie, CAPTCHA przy tworzeniu w sesji przeglądarki i wymuszony skan synchroniczny. Standardowe przestrzenie robocze dostają 1000 linków dziennie.
4. Klucze API hashowane z pepperem po stronie serwera
Przechowywanie kluczy jawnym tekstem jest nie do obrony. My zapisujemy HMAC-SHA256(pepper, key), a jawny tekst pokazujemy raz, przy tworzeniu. Przy wyszukiwaniu hashujemy przychodzący token bearer i porównujemy hashe. Szybki hash z kluczem pasuje do długich losowych tokenów, a pepper sprawia, że samej skradzionej bazy nie da się złamać siłowo. Klucze mogą mieć expires_at; rotacja jest ręczna (zob. sekcja o lukach).
5. Hasła do linków hashowane Argon2id
Hasła do linków są przechowywane jako hashe Argon2id (64 MiB, 2 iteracje, 4 wątki, kodowanie PHC), a API nigdy nie zwraca hasha, tylko wartość logiczną password_set. Pamiętaj o realnej luce: według stanu na 2026-10-24 publiczna usługa przekierowań nie ma monitu o hasło. Sprawdzenie odbywa się w API wyszukiwania (nagłówek X-Password, odpowiedź 401 z password_required: true), więc hasło na linku nie jest jeszcze bramką dostępu dla osób klikających krótki URL. Nasz wpis o linkach chronionych hasłem opisuje, co działa dziś. Jeśli potrzebujesz twardej kontroli dostępu, użyj trybu linku szyfrowanego end-to-end albo wprowadź uwierzytelnianie na stronie docelowej.
6. Wygasanie i limity kliknięć
Stare linki kampanii pozostają przydatne dla atakujących długo po zakończeniu kampanii. Linki przyjmują expires_at i max_clicks, oba egzekwowane na ścieżce przekierowania. O cyklu życia linku przeczytasz w wygasaniu linków i linkach samozniszczalnych.
7. Log audytu, który przeczytasz sam
Akcje zmieniające dane zapisują zdarzenia audytu, czytelne dla członków z uprawnieniem audytu pod GET /v1/workspaces/{id}/audit. Każdy wiersz jest powiązany z poprzednim przez SHA-256 (prev_hash, entry_hash), więc edycje lub usunięcia wykrywa zadanie verify-chain. Pakiet dowodów zgodności (.../compliance/evidence.zip) zawiera zdarzenia z ostatnich 90 dni w CSV. Retencja jest ustawiana na przestrzeń roboczą.
8. Listy dozwolonych IP
Jeśli cały prawidłowy ruch API pochodzi ze znanych zakresów, lista dozwolonych adresów zmienia wyciek klucza w znacznie mniejszy problem. Każda przestrzeń robocza może przechowywać prefiksy CIDR; gdy lista jest włączona i niepusta, pozostałe adresy źródłowe dostają 403 nawet z ważnym kluczem. Adres klienta jest brany z X-Forwarded-For, jeśli występuje, więc upewnij się, że łańcuch proxy jest taki, jakiego oczekujesz.
9. Filtrowanie botów na ścieżce przekierowania
Edge dopasowuje User-Agent do listy sygnatur crawlerów, botów podglądu, monitorów dostępności i klientów HTTP (około 45 wpisów), a pusty User-Agent traktuje jako bota. Dopasowane żądania nadal dostają przekierowanie; tłumione jest tylko zdarzenie kliknięcia. Osobny moduł oceny oznacza kliknięcia jako podejrzane, bez ich blokowania, gdy uruchomią się co najmniej dwa słabe sygnały (brak User-Agent, brak Accept-Language, seria z jednego IP).
10. SSO i SCIM
Konfiguracja SSO na przestrzeń roboczą, wykrywanie domeny pod GET /v1/sso/discover?domain= oraz webhook SCIM pozwalają dostawcy tożsamości obsługiwać logowanie i wyłączanie kont. Elido nie widzi hasła.
Popołudniowa rutyna weryfikacji
Do przesiewowej oceny skracacza nie potrzebujesz testu penetracyjnego. Załóż darmowe konto, skróć URL, który kontrolujesz, a potem przeczytaj nagłówki odpowiedzi i dokumentację API. Utwórz klucz API i sprawdź, czy panel kiedykolwiek pokaże go ponownie. Wywołaj testowy webhook i obejrzyj nagłówki podpisu. Potem wyślij poniższą tabelę na adres supportu dostawcy i zmierz czas odpowiedzi.
Pytania do każdego dostawcy
| Zapytaj | Dobra odpowiedź brzmi |
|---|---|
| Jak przechowywane są klucze API? | Algorytm i informacja, czy używany jest pepper |
| Jak podpisywane są webhooki? | HMAC ze znacznikiem czasu wewnątrz podpisywanego ciągu |
| Które feedy zagrożeń są skanowane? | Feedy wymienione z nazwy oraz harmonogram ponownych skanów |
| Czy limity żądań są na przestrzeń roboczą? | Tak i różnią się zależnie od planu |
| Czy admini mogą czytać log audytu? | Samodzielnie, z eksportem, odporny na manipulacje |
| Hashowanie haseł do linków? | Argon2id lub bcrypt, nigdy MD5 ani SHA-256 |
| Filtrowanie botów? | Udokumentowane, tłumi zdarzenia, a nie przekierowania |
| Lista dozwolonych IP na przestrzeń roboczą? | Tak, oparta na CIDR |
Jeśli dostawca nie potrafi odpowiedzieć na piśmie na pierwszy, drugi, trzeci i piąty wiersz w ciągu jednego dnia roboczego, dokumentacja prawdopodobnie nie istnieje.
Gdzie Elido wciąż się wzmacnia
- Limity żądań są lokalne dla procesu. Buckety są w pamięci każdej repliki, więc przy N replikach przestrzeń robocza może przekroczyć limit nawet N razy. Wspólny limiter jest planowany, ale jeszcze nie wdrożony.
- Brak WAF. Mamy limity żądań, filtrowanie botów i listę blokad domen. Przed publicznymi linkami o dużym wolumenie postaw zewnętrzny WAF.
- Ponowne skany są okresowe, nie natychmiastowe. Przegląd uruchamia się co sześć godzin i sprawdza ponownie linki niesprawdzane przez ostatnie siedem dni; nowo oznaczony link jest automatycznie zawieszany, a właściciel dostaje powiadomienie. Link może działać przez kilka dni po tym, jak feed go wpisze na listę.
- Rotacja kluczy jest ręczna. Istnieje tylko opcjonalne
expires_at. - Brak certyfikacji. Brak certyfikatu ISO 27001; SOC 2 jest w przygotowaniu.
- Adresy IP są obcinane, nie usuwane. Edge obcina je do /24 (IPv4) lub /48 (IPv6), ale miasto, współrzędne i pełny user agent są nadal przechowywane przy każdym kliknięciu. Nasza lista kontrolna RODO opisuje, co to dla Ciebie oznacza.
Dwie pokrewne lektury: podatności otwarte przekierowanie i phishing przez kody QR.
Powiązane na blogu
Najczęściej zadawane pytania
Jak sprawdzić, czy skracacz URL jest bezpieczny?
Poproś o konkrety na piśmie i porównaj je z dziesięcioma punktami tej listy. Bezpieczny skracacz potrafi wskazać feedy zagrożeń, z którymi sprawdza adresy docelowe, powiedzieć, jak przechowuje klucze API (podać algorytm, a nie zapewnienie), podpisywać webhooki kodem HMAC powiązanym ze znacznikiem czasu, stosować limity żądań na poziomie przestrzeni roboczej, prowadzić log audytu czytelny bez zgłoszenia do supportu i opisać, co się dzieje, gdy link stanie się złośliwy już po utworzeniu. Ogólniki w stylu 'poważnie traktujemy bezpieczeństwo' to sygnał ostrzegawczy.
Czy skracacz URL może służyć do phishingu?
Tak. Krótki link ukrywa adres docelowy aż do kliknięcia, więc atakujący używają skracaczy do maskowania stron wyłudzających dane logowania i plików z malware. Dlatego poważny dostawca sprawdza każdy adres docelowy w feedach zagrożeń przy tworzeniu, później ponownie skanuje zapisane linki, ogranicza tempo tworzenia linków przez nowe konta i szybko usuwa linki nadużywane po zgłoszeniu.
Jak skracacz URL powinien przechowywać klucze API?
Nigdy jawnym tekstem. Minimum to jednokierunkowy hash, a lepszy projekt dodaje sekret po stronie serwera (pepper), żeby sam wyciek bazy nie pozwalał łamać kluczy offline. Elido przechowuje HMAC-SHA256 każdego klucza z użyciem peppera po stronie serwera, a jawny token pokazuje dokładnie raz, przy tworzeniu. Klucze API to długie losowe ciągi, więc szybki hash z kluczem jest dla nich odpowiedni; wolne hashe haseł, takie jak Argon2id, mają znaczenie dla sekretów wybieranych przez ludzi, na przykład haseł do linków.
Co powinien zawierać podpisany webhook?
Podpis liczony zarówno ze znacznika czasu, jak i z surowej treści, plus sam znacznik czasu w osobnym nagłówku, aby odbiorca mógł odrzucać nieaktualne dostawy. Podpisanie samej treści pozwala atakującemu odtwarzać przechwycone żądanie w nieskończoność. Elido wysyła v1=HMAC-SHA256(secret, timestamp.body) w X-Elido-Signature (z aliasem X-Webhook-Signature) wraz z X-Webhook-Timestamp, a podczas rotacji sekretu dodaje X-Elido-Signature-Previous, żeby odbiorcy mogli zmienić klucz bez przestoju.
Czy Elido ma SOC 2 lub ISO 27001?
Jeszcze nie. Elido nie ma certyfikatu ISO 27001, a SOC 2 jest w przygotowaniu, więc dziś nie ma raportu do przekazania. Istnieje za to inżynieria stojąca za zabezpieczeniami z tego wpisu, w tym odporny na manipulacje łańcuch hashy w logu audytu i 90-dniowy eksport dowodów. Jeśli certyfikat jest twardym wymogiem w Twoich zakupach, potraktuj to jako obecną lukę i zapytaj przed zakupem.
Czy skracacz URL potrzebuje zapory aplikacji webowych (WAF)?
Ścieżka przekierowania w skracaczu jest wąska: wyszukaj kod, zwróć przekierowanie. To ogranicza ryzyko injection, ale nie usuwa ruchu typu denial-of-service ani nadużyć. Elido stosuje limity żądań, filtrowanie botów i feed z listą blokad na ścieżce przekierowania, ale nie ma własnego WAF na warstwie aplikacji. Dla publicznych linków o dużym wolumenie lepszy jest zewnętrzny WAF lub zestaw reguł CDN przed edge.
Wypróbuj Elido
Wklej URL, otrzymaj krótki link
Bez rejestracji. Link działa 30 dni. Zarejestruj się, aby zachować go na zawsze.
Bez rejestracji. Załóż darmowe konto i korzystaj z 50 linków miesięcznie.
