Embed Video mittels ?url= Parameter sicher übergeben

  • Hallo zusammen,

    ich stehe vor der Herausforderung, wie ich eine Video-URL sicher mittels eines ?url= Parameters an eine video.php bzw. index.php Datei übergeben kann. Mein Ziel ist es, einen Embed-Code von einer Videoseite an eine video.php/index.php Datei zu senden, allerdings auf eine sichere Weise.

    Leider stoße ich immer wieder auf das Problem, dass meine video.php/index.php Datei überschrieben und mit unerwünschter Werbung gefüllt wird. Dieses Problem dehnt sich sogar auf Unterordner aus, in denen sich weitere index.php Dateien befinden, die dann ebenfalls überschrieben werden. Es scheint, als ob jemand unberechtigten Zugriff erhält, um dies durchzuführen. Wie kann ich das verhindern?

    Mein bisheriger Ansatz sieht wie folgt aus:

    PHP
    <?php
    $videoUrl = isset($_GET['videoUrl']) ? $_GET['videoUrl'] : '';
    
    if (!filter_var($videoUrl, FILTER_VALIDATE_URL)) {
       die('Ungültige URL!');
    }
    echo '<iframe width="560" height="315" src="'.htmlspecialchars($videoUrl).'" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
    ?>

    Gibt es grundsätzlich bessere Methoden, insbesondere im Hinblick auf die Sicherheit?

    mfg

  • Ich versteh den Beitrag leider überhaupt nicht, das einzige was ich verstehe, das jemand fremdes Zugriff auf dein Dateisystem hat und dir Dateien überschreibt.

    Projekte:

    XIVDATA - Eorzea Database

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • Um mein Problem genauer zu beschreiben: Ich möchte auf meiner eigenen One-Page-Website mittels eines URL-Parameters eine Embed-URL übergeben, damit das Video inklusive meinem restlichen Content auf dieser Seite angezeigt wird. Seitdem ich diese Methode verwende, scheint es, als ob jemand (oder etwas) die Fähigkeit hat, sämtliche meiner index.php Dateien zu überschreiben. Wenn ich das Skript entferne, bleiben die index.php Dateien unversehrt. Sobald ich mein Skript wieder verwende, tritt das Problem erneut auf. Dies deutet darauf hin, dass das Skript unsicher ist und jemand über diesen Parameter die index.php Dateien manipulieren kann.


    mfg

  • Naja, du übernimmst ungeschützt sämtliche Eingaben die man dir via GET übergibt (URL Parameter).

    Da könnte man ganz "einfach" auch je nach Konfiguration böses anstellen wie example.tld/vide.php?videoUrl='.unlink('~/*');.

    Man möge beachten das das ein extremes Beispiel ist (und ich jetzt auch nicht auf korrektheit geachtet habe).

    Projekte:

    XIVDATA - Eorzea Database

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • Auch das ist mir bewusst, aber scheinbar reicht das nicht aus. Daher wollte ich hier das Schwarmwissen nutzen und fragen, was die Best Practice wäre, um sicherzustellen, dass die Übergabe entsprechend geschützt ist und sich niemand unberechtigten Zugang verschaffen kann.

  • Du nutzt wie ich schon schrieb das zu spät.

    PHP
    <?php
    $videoUrl = isset($_GET['videoUrl']) ? htmlspecialchars($_GET['videoUrl']) : '';
    
    if (!filter_var($videoUrl, FILTER_VALIDATE_URL)) {
       die('Ungültige URL!');
    }
    echo '<iframe width="560" height="315" src="'.htmlspecialchars($videoUrl).'" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';

    Projekte:

    XIVDATA - Eorzea Database

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

    • New
    • Official Post

    Da könnte man ganz "einfach" auch je nach Konfiguration böses anstellen wie example.tld/vide.php?videoUrl='.unlink('~/*');.

    Äh, nein? So funktioniert PHP nicht.

    Sunny C. Ist das oben der gesamte Code oder steht in der Datei noch mehr? Denn das gezeigte ist absolut unproblematisch.

    Alexander Ebert
    Senior Developer WoltLab® GmbH

  • Äh, nein? So funktioniert PHP nicht.

    Sunny C. Ist das oben der gesamte Code oder steht in der Datei noch mehr? Denn das gezeigte ist absolut unproblematisch.

    Vielleicht die Video URL vor der Übergabe noch wegen möglichen Sonderzeichen und Umlauten durch urlencode() codieren und im Anschluss wieder decodieren (urldecode())?

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!