location ~ \.jpg$ {
if ($uri ^~ ABC) {
return 403;
}
root /home/example.com/public_html
}
Próbowałem na różne sposoby i nie chce to cholerstwo działać, albo zawsze mam 403 albo zawsze 200. I nie udało mi się znaleźć dokumentacji na temat warunków. Czy ktoś wie, jak wpisać ten config, by działało to tak jak chcę?
To ma być zabezpieczenie przed hotlinkowaniem, kod zmienia się cyklicznie. Weryfikacja po innych danych (referrer, itd.) może być uciążliwa dla części userów.
Okej, teraz trochę nie rozumiem, bo myślałem że cała ideą zabezpieczania przed hotlinkowaniem jest właśnie wyświetlanie obrazka o ile albo nie ma referera albo jest określony.
Jeżeli będziesz rotował kody, to musisz na autoryzowanych stronach generować urla automatycznie, albo im też przestana działać po rotacji.
PS. Sory nie wiem na czym polega twoje rozwiązanie i/lub twój problem dokładnie, dlatego ciężko mi trafić z sugestiami, żeby nie było zupełnie offtopic, upewnij się że dopasowujesz także parametr w zapytaniu, bo inaczej ktoś może spróbować dotrzeć do prawidłowego kodu puszczając po prostu bardzo długiego requesta z maksymalną ilością kombinacji.
No tak to właśnie działa: co parę godzin zmienia się kod w aplikacji i ładuje się nowy config nginxa, jest to 16 znakowy hash generowany na podstawie czasu. Wiem, że jest to niedoskonałe (ktoś może pobierać nowy kod i wstawiać do swoich hotlinków), ale na chwilę obecną rozwiązało problem z hotlikowaniem. Jeśli będzie potrzeba, to zrobię bardziej wysublimowane zabezpieczenie.
No dobra, już tłumaczę. Nie jestem ekspertem, ale jest taki problem, że requesty z naszej strony o te pliki (konkretnie chodzi o filmy w .flv) nie mają podanego referera, bo są pobierane przez flashowego playera wstawianego ajaxem. Może da się zachować refererać przy tej operacji, ale skoro aktualnie u nas referery znikają, to taki sam skrypt może wstawić konkurencja, a wtedy sensownie jest dopuścić tylko nasze adresy referer, co uwali naszych użytkowników, którzy ich nie wysyłają.