Ich habe eine Soziale Netzwerkseite für Gärtner Website und bin daran interessiert, den Nutzern die Möglichkeit zu geben, ihren "Tweets" Bilder hinzuzufügen.
Wenn ich ihnen erlaube, Bilder auf die eigentliche Website hochzuladen, dürfte das schnell teuer werden (dies ist ein Nebenprojekt, das nur von mir selbst und meinen eigenen Obsessionen finanziert wird). Nehmen wir an, die Seite wird mäßig populär, mit 100K Benutzern, die ein Bild pro Woche hochladen, das nur 250K groß ist. Das sind (100000 * .1 * 52 / 1024) = 508 MB/Jahr an Speicherplatz (und dabei ist die erhöhte Bandbreite noch nicht berücksichtigt). Außerdem müsste ich die Serverlast erhöhen, um die Bilder zu skalieren. Ich bin mir nicht sicher, ob ich einfach so weitermachen soll, oder ob es bessere Möglichkeiten gibt.
Die Verknüpfung mit anderen Websites scheint in mancher Hinsicht besser zu sein. Es gibt zwar defekte Links, aber ein größeres Problem ist für mich die Sicherheit: XSS.
Die Anwendung ist auf Rails 3, mit MongoDB / Mongoid als das Backend, wenn das wichtig ist.
Ich bin auf der Suche nach Lösungen wie:
- APIs, die Bilder auf externen Websites speichern. Ideal wäre die Möglichkeit, das Bild auf meine Website hochzuladen und einen API-Aufruf zu tätigen, um es auf einer externen Website zu speichern.
- APIs (vielleicht Javascript-APIs), die es einfach machen, eine oder mehrere externe Bild-Hosting-Sites sicher zu verlinken.
- Markdown oder ähnliches Markup, das eine sichere Verlinkung zu externen Bildern ermöglicht. Ich bin daran interessiert, den Nutzern die Möglichkeit zu geben, ihre Beiträge auf begrenzte Weise zu formatieren, so dass dies zwei Probleme gleichzeitig lösen könnte. Mir ist aufgefallen, dass Stack Overflow genau das tut.
- Sicherheitsbibliotheken, die Bild-URL-Muster auf die Whitelist setzen
- Ratschläge, warum ich über dieses Problem falsch denke. Vielleicht sollte ich zum Beispiel nur die Bilder speichern. 500 MB pro Jahr sind wirklich nicht so teuer, und es erlaubt mir, eine sehr saubere Benutzererfahrung zu schaffen.
Meine Ziele sind (in dieser Reihenfolge): - Sicherheit, sowohl für meine eigene Website, als auch um XSS-Angriffe auf andere Websites zu verhindern - Bestmögliche Benutzerfreundlichkeit - Einfach zu pflegen und zu implementieren
Was haben Sie getan, um von Nutzern bereitgestellte Bilder auf Ihrer Website zuzulassen?