Stworzyłem stronę internetową social networking site for gardeners i jestem zainteresowany udostępnieniem użytkownikom zdjęć do ich "tweetów".Jak mogę bezpiecznie i niedrogo zezwalać na obrazy w mojej witrynie?
Jeśli pozwolę im przesłać obrazy do rzeczywistej strony, wydaje się, że szybko to stanie się kosztowne (jest to projekt poboczny, nie finansowany przez nikogo oprócz mnie i moich własnych obsesji). Załóżmy, że witryna zyskuje umiarkowaną popularność, a 100 tys. Użytkowników publikuje jeden obraz w tygodniu o rozmiarze zaledwie 250 KB. To (100000 * .1 * 52/1024) = 508 MB/rok w pamięci (i to nie uwzględnia zwiększonej przepustowości). Plus musiałem zwiększyć obciążenie serwera, aby skalować obrazy. Nie jestem pewien, czy powinienem po prostu iść z tym naprzód, czy też istnieją lepsze możliwości.
Łączenie z innymi witrynami wygląda na lepsze pod pewnymi względami. Masz uszkodzone linki, ale większym problemem jest dla mnie bezpieczeństwo: XSS.
Aplikacja jest na Railsach 3, używając MongoDB/Mongoid jako zaplecza, jeśli to ma znaczenie.
Szukam rozwiązań, takich jak:
- API, które przechowują obrazy na stronach zewnętrznych. Idealna byłaby możliwość przesłania jej do mojej witryny i wywołania interfejsu API w celu przechowywania jej w zewnętrznej witrynie.
- Interfejsy API (być może JavaScript API), które ułatwiają bezpieczne łączenie z jedną lub więcej zewnętrznych stron hostujących obrazy.
- Markdown lub podobne znaczniki umożliwiające bezpieczne łączenie z obrazami zewnętrznymi. Jestem zainteresowany udostępnieniem użytkownikom możliwości formatowania postów w ograniczonym zakresie, więc może to rozwiązać dwa problemy w tym samym czasie. Zauważam, że właśnie to robi Stack Overflow.
- Biblioteki zabezpieczeń z białymi wzorcami adresów URL obrazów
- Porady na temat tego, dlaczego źle o tym myślę. Na przykład, może powinienem po prostu przechowywać obrazy. 500 MB rocznie nie jest wcale tak drogie i pozwala mi stworzyć bardzo czyste środowisko pracy.
Moje cele są (w kolejności): - Bezpieczne, zarówno na własnej stronie, i aby nie pozwolić ataki XSS wobec innych stron - możliwe najlepsze doświadczenie użytkownika - łatwa do utrzymania i stosowania
Co zrobiłeś, aby umożliwić umieszczanie obrazów dostarczanych przez użytkowników w Twojej witrynie?
Co zamierzałem powiedzieć. 508 MB pamięci będzie działać na poziomie około 1 USD na S3. –