2010-07-05 13 views
8

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?

Odpowiedz

2

Dlaczego nie korzystanie z usług takich jak Amazon S3?Jest tani, bardzo tani (dzięki Reduced Redundancy Storage), a najważniejsze wtyczki, takie jak Paperclip, wspierają go po wyjęciu z pudełka ...

+0

Co zamierzałem powiedzieć. 508 MB pamięci będzie działać na poziomie około 1 USD na S3. –

4

Myślicie o problemie;) lub raczej nie we właściwym czasie.

Nie przejmuj się teraz przepustowością, gdy nie masz jeszcze zbyt wielu użytkowników. Skoncentruj się na tym, aby strona była przyjazna i popularna. Wydajność, przepustowość, miejsce na dysku - to są rzeczy, nad którymi będziesz pracować, gdy staną się problemem. Do czasu, gdy masz 100 000 użytkowników, koszt zakupu przestrzeni i przepustowości na przykład na Amazon S3 może już nie być problemem.

+3

Rozumiem, że opóźnienie w optymalizacji przepustowości może być rozsądne, ale na pewno nie za wcześnie aby dowiedzieć się, jak bezpiecznie kodować. – pc1oad1etter

+0

Chociaż jest to prawdą, wszystko, co robił, to przenoszenie problemu na miejsce, w którym strona jest często używana i przerosło pierwotny serwer, wtedy musiałby to naprawić, jednocześnie wspierając aktywnych użytkowników. Byłoby lepiej rozwiązać teraz. – Arcath

+0

Tak, po tym jak strona stanie się wystarczająco duża, zawsze będziesz mieć możliwość umieszczenia wybranych reklam na stronie i wygenerowania części dochodów, aby zapłacić za zwiększone koszty. – stephenmurdoch

0

Musisz przyjrzeć się T & C hostów obrazków (flickr itp.) I sprawdzić, czy Twoje zastosowanie jest właściwe. Flickr ma interfejs API, nie ma pewności, czy inni szukają właśnie apletu HOST.

Flickrs API jest pod adresem: http://www.flickr.com/services/api/

+0

Dziękuję, Arcath. Spojrzałem na Flickr i kilka innych alternatyw. Flickr musi być niekomercyjny do swobodnego użytku, chociaż Picassa pozwala na komercyjne wykorzystanie. – Jade

+0

Nawiasem mówiąc, nie mogłem zostawić komentarza powyżej, ponieważ przycisk "Dodaj komentarz" pojawia się pod linkami po prawej stronie. Ale dziękuję Andrei i Toby! – Jade