Ich möchte den direkten Zugriff auf einige öffentliche Dateien aus meinem Verzeichnis blockieren. Zum Beispiel habe ich die Datei image.png und ich muss ein Captcha ausfüllen, um diese Datei herunterzuladen, wenn ich das Captcha fehlschlagen möchte ich nicht, dass der Benutzer auf die Datei zugreifen konnte. Gibt es eine Möglichkeit, das in Symfony zu tun?Direkte Downloads blockieren mit Symfony
Antwort
Erstellen Sie zunächst eine .htaccess
Datei im Image-Verzeichnis, um den direkten Zugriff auf Dateien innerhalb des Verzeichnisses zu verhindern.
Deny from All
Nun gibt maßgeschneiderten Weg durch controller
die Datei herunterzuladen, wo man leicht ein captcha
unter Verwendung einig Bündel wie Gregwar's CaptchaBundle integrieren kann.
Nach erfolgreicher Captcha-Validierung laden Sie die Datei unter Response
herunter.
$filename = __DIR__ . "../path_to_file/image.png";
// Generate response
$response = new Response();
// Set headers
$response->headers->set('Cache-Control', 'private');
$response->headers->set('Content-type', mime_content_type($filename));
$response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '";');
$response->headers->set('Content-length', filesize($filename));
// Send headers before outputting anything
$response->sendHeaders();
$response->setContent(file_get_contents($filename));
Hinweis: Code nicht getestet!
Hoffe, das hilft!
Danke für Ihre Antwort! Ich denke, dass es gut funktioniert, aber nur eine letzte Frage. Ich benutze Nginx als Server, ich habe die htaccess erstellt, aber es hat nicht funktioniert, ich weiß nicht, ob es an diesem Nginx-Server oder einem anderen Zeug ist –
Sie müssen 'Nginx' Server-Konfigurationsdatei dafür ändern. Ich habe keine direkten Erfahrungen bei der Einrichtung eines 'Nginx'-Servers. Vielleicht möchten Sie diesen 2 Links folgen: [Conversion Tool] (https://winginx.com/de/htaccess), [Config] (http://serverfault.com/a/267510/401780) – Jeet
- 1. Starten Sie Downloads mit einer JavaScript-Funktion
- 2. Datei-Downloads mit Drupal
- 3. Umgang mit Downloads in Java
- 4. direkte FTP-Verbindung mit Sterne
- 5. Automatisierte direkte Nachrichtenantwort mit Tweepy
- 6. blockieren und nicht blockieren Unterprozessaufrufe
- 7. direkte Datenbankabfrage mit select_all mit Platzhalter
- 8. Git Klon/Downloads Geschichte
- 9. NGINX Downloads PHP-Datei
- 10. Bestimmte Tastaturtastenkombinationen blockieren mit C#
- 11. Blockieren DOM Parsing mit JavaScript
- 12. Blockieren einer Website mit Java
- 13. Blockieren von Tastenkombinationen mit C#
- 14. Blockieren von Funktionen mit OpenMP
- 15. Blockieren von ListenableFuture mit Timeout
- 16. Blockieren von Empfehlungsspam mit Nginx?
- 17. Nginx Rewrite Downloads Datei
- 18. Pause URL Anfrage Downloads
- 19. Blockieren/Entsperren von Ports mit Python für Windows möglich? Wie?
- 20. Laravel - Datei-Downloads
- 21. CSV-Downloads als HTM
- 22. Doppelte Downloads verwalten
- 23. JS konsekutives Formular Downloads
- 24. Wifi direkte Gruppenreformation
- 25. Google Play-Entwickler-Konto mit weniger Downloads
- 26. Begrenzung der Bandbreite des Downloads mit cURL
- 27. Für Abonnements/Downloads mit Wordpress laden
- 28. Probleme mit automatischer Downloads und IE Sicherheitswarnung
- 29. CakePHP: Berichterstattung fehlgeschlagen Downloads mit der Medienansicht
- 30. Fortsetzen abgebrochene Downloads mit PHP-FTP?
Ich würde wirklich vorschlagen, * diese Dateien * außerhalb des öffentlichen Verzeichnisses * zu verschieben und sie nur zu bedienen, indem sie einen Controller übergeben (siehe @ Jeets Antwort unten). – Gerry