PHP - Eingabe aus Box in einen Link einfügen.
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
angriff
boxen
code
funktion
funktionieren
gleiche beispiel
gleiche prinzip
http
inhalt
jemand
nehmen
run
text
treten
url
variable url
versuch
video
virus
-
Hallo,
ich bräuchte für meine Webseite nochein Script, bei dem man eine Eingabe in eine Box macht, und es unten als Link ausgegeben wird. Mach ich dies mit $_POST funktioniert es bei links nicht.
Beispiel:
Ich geb google.com in die Box ein, drück auf den Button, und folgendes sollte ausgegeben werden:
<a href="google.com">Linktext</a>
Also sollte "google.com" durch jeden beliebigen link ersetzt werden können.
Jemand eine andere Idee? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
zeig doch mal deinen codeansatz
-
Das ging bei mir mit php so:
<a href="<?php echo $link?>"><?php echo $link?></a>
Beitrag zuletzt geändert: 12.12.2011 21:32:54 von jnuk -
@jnuk
Dann die Box als Link benammsen und alles sollte funktionieren?
Beitrag zuletzt geändert: 12.12.2011 21:36:22 von abc124 -
Ne musst über POST oder GET die Variable "Link" übertragen.
-
Danke schonmal, habs jetzt probiert, aber anscheinend hab ichs falsch verstanden, was vll daran liegt das meine PHP-Kentnisse schwach sind. Hättest du Zeit für ein Beispiel?
-
Klar. Geh mal auf meinen Webspace. Da klickst du auf den untersten Link. Dann kommst du auf meine PHP-Weiterleitungsseite.
Hier der <Body>-Code von Index.html:
<body> <!-- Titel --> <h1><a href="http://www.lima-city.de/">Gratis Homepage</a> erstellen:</h1> <!-- Untertitel --> <h2>Hier entsteht in Kürze eine neue <a href="http://www.lima-city.de/">kostenlose Homepage</a></h2> <!-- Text --> <p>Dieser <a href="http://www.lima-city.de/">kostenlose Webspace</a> ist gerade neu eingerichtet worden, und wird in Kürze mit Inhalt gefüllt!</p> <p><strong><a href="http://www.lima-city.de/">Gratis Webspace</a></strong> und <strong><a href="http://www.lima-city.de/2008/domains">günstige Domains</a></strong> von <strong><a href="http://www.lima-city.de/">lima-city</a></strong>: <strong><a href="http://www.lima-city.de/">Webhosting werbefrei</a></strong>!</p> <p> </p> <p><a href="http://www.lima-city.de/">www.lima-city.de</a></p> <p><a href="extlink/run.php?url=http://www.lima-city.de/">lima-city</a></p> </body>
Man beachte den letzten Link:
<a href="extlink/run.php?url=http://www.lima-city.de/">lima-city</a>
Hier wird man zu "extlink/run.php" weitergeleitet, und die Variable "url" wird via GET übergeben. (Das hinter dem Fragezeichen).
Jetzt die run.php in /extlink:
<?php $url = $_GET["url"] ?> <head> <meta http-equiv="refresh" content="5; URL=<?php echo $url?>"> </head> <?php echo '<h1>ACHTUNG!</h1></br>'; echo 'Sie werden nun zu <h3>'.$url.'"</h3> weitergeleitet!</br></br></br>'; echo '<h4>Für den Inhalt auf dieser Seite übernehme ich keine Haftung!</h4></br>'; ?>
Hier wird zuerst die Variable "url" via GET abgefragt und in $url gespeichert.
Nun wird im <head> des HTML-Teils befohlen, dass nach 5 Sekunden an die Website $url weitergeleitet wird. (In diesem Fall an Lima-City.de)
Unten im "großen" Php-Teil wird nur nochmal die Variable $url ausgegeben und eine Warnung angezeigt.
Wenn du noch Fragen hast frag ruhig.
Beitrag zuletzt geändert: 12.12.2011 22:01:07 von jnuk -
Mir fällt grad noch ein, wie man's bei dir lösen könnte:
index.php:
<html> <body> <form method="GET"> <input type="text" name="link"> <input type="submit" value="GO!"> </form> </body> </html> <?php $link = $_GET["link"] echo "<a href='".$link."'>LINK *klick*</a>"; ?>
Aber ich glaub, dass man dann die Seite neu laden muss... Weiß net genau.
Beitrag zuletzt geändert: 12.12.2011 22:09:06 von jnuk -
Aber ich glaub, dass man dann die Seite neu laden muss... Weiß net genau.
Klar muss man die Seite neuladen, PHP ist schließlich eine serverseitige Sprache.
(Wenn man jetzt nicht noch AJAX nutzt) -
Ist jetzt einiges dazwischen gekommen und habs erst jetzt getestet.
Das Script funktioniert in deinem Fall schon, du füngst den Link als text wieder ein. Aber nehmen wir mal an ich will ein youtube video einbetten:
<iframe width="560" height="315" src="DIESEN LINK WILL ICH ERSETZEN" frameborder="0" allowfullscreen></iframe>
Jetzt sind " vorhanden und das ganze funktioniert nicht mehr. -
Du könntest eine PHP-Funktion nutzen:
wobei in $link deine URL drin steht<iframe width="560" height="315" src="<?php echo(urlencode($link)); ?>" frameborder="0" allowfullscreen></iframe>
Dieser Versuch kann übrigens böse in einem XSS-Angriff enden. Heißt:
1) Du glaubst deine Seite ist sicher.
2) Jemand schickt dir einen Link auf die Seite (mit einem ?link=http://www.link.de/auf/ein/böses/skript/mit/virus)
3) Du bekommst dieses Mail und glaubst: "Die Seite ist sicher, mir kann nichts passieren wenn ich da drauf klicke."
4) Du klickst auf den Link und es wird ein Virus/... geladen
5) WTF! ich dachte die Seite wäre sicher!!! -
Dieser Versuch kann übrigens böse in einem XSS-Angriff enden. Heißt:
1) Du glaubst deine Seite ist sicher.
2) Jemand schickt dir einen Link auf die Seite (mit einem ?link=http://www.link.de/auf/ein/böses/skript/mit/virus)
3) Du bekommst dieses Mail und glaubst: "Die Seite ist sicher, mir kann nichts passieren wenn ich da drauf klicke."
4) Du klickst auf den Link und es wird ein Virus/... geladen
5) WTF! ich dachte die Seite wäre sicher!!!
Nehmen wir das gleiche Beispiel. Wenn jemand einen unsicheren Link einfügt, wird Video ist nicht verfügbar oder Ähnliches angezeigt. Bei mir wirds das gleiche Prinzip sein. -
abc124 schrieb:
Das Problem das ich gemeint habe tritt dann auf wenn du erst sowas hast:
Nehmen wir das gleiche Beispiel. Wenn jemand einen unsicheren Link einfügt, wird Video ist nicht verfügbar oder Ähnliches angezeigt. Bei mir wirds das gleiche Prinzip sein.
Wenn dieser Text ungefiltert an das src vom iframe übergeben wird kann darin jede beliebige Seite geladen werden.$link = $_GET['link'];
-
hackyourlife schrieb:
abc124 schrieb:
Das Problem das ich gemeint habe tritt dann auf wenn du erst sowas hast:
Nehmen wir das gleiche Beispiel. Wenn jemand einen unsicheren Link einfügt, wird Video ist nicht verfügbar oder Ähnliches angezeigt. Bei mir wirds das gleiche Prinzip sein.
Wenn dieser Text ungefiltert an das src vom iframe übergeben wird kann darin jede beliebige Seite geladen werden.$link = $_GET['link'];
Ist mir bewusst. Aber versuch mal www.virus.net in ein YoutubeVideo einzubetten.
Bzw ich bekomms auch mit deinem Code nicht hin -
abc124 schrieb:
Noch einmal: das funktioniert bei folgendem PHP-Code:
Ist mir bewusst. Aber versuch mal www.virus.net in ein YoutubeVideo einzubetten.<?php $link = $_GET['link']; ?> <!-- irgend ein HTML-Code --> <iframe width="560" height="315" src="<?php echo(urlencode($link)); ?>" frameborder="0" allowfullscreen></iframe> <!-- noch irgend ein HTML-Code -->
Wenn du die Seite jetzt mit
aufrufst hast du einen HTML-Text produziert der folgendes beinhaltet:http://www.adresse.de/der/seite.php?link=http://www.virus.net/
Damit bist du genau dort wo du nicht hin willst.<iframe width="560" height="315" src="http://www.virus.net/" frameborder="0" allowfullscreen></iframe>
Der XSS-Angriff funktioniert nur bei so einem Script (wenn also ein Parameter direkt in den HTML-Text ausgegeben wird)!
abc124 schrieb:
Was bekommst du nicht hin?
Bzw ich bekomms auch mit deinem Code nicht hin -
hackyourlife schrieb:
abc124 schrieb:
Noch einmal: das funktioniert bei folgendem PHP-Code:
Ist mir bewusst. Aber versuch mal www.virus.net in ein YoutubeVideo einzubetten.<?php $link = $_GET['link']; ?> <!-- irgend ein HTML-Code --> <iframe width="560" height="315" src="<?php echo(urlencode($link)); ?>" frameborder="0" allowfullscreen></iframe> <!-- noch irgend ein HTML-Code -->
Wenn du die Seite jetzt mit
aufrufst hast du einen HTML-Text produziert der folgendes beinhaltet:http://www.adresse.de/der/seite.php?link=http://www.virus.net/
Damit bist du genau dort wo du nicht hin willst.<iframe width="560" height="315" src="http://www.virus.net/" frameborder="0" allowfullscreen></iframe>
Der XSS-Angriff funktioniert nur bei so einem Script (wenn also ein Parameter direkt in den HTML-Text ausgegeben wird)!
abc124 schrieb:
Was bekommst du nicht hin?
Bzw ich bekomms auch mit deinem Code nicht hin
Mit "versuch mal" meinte ich nicht den PHP code, sondern eig einfach virus.net als Video einzugeben. Kein Fenster erscheint. Das heisst kein ungewollter Link zu einer ungewollten Seite. Oder wie soll sonst der Angriff stattfinden?
Wenn ich genau deinen Code verwende:
The requested URL /youtube/http://www.youtube.com/watch?v=fcO9svaOahM was not found on this server.
-
abc124 schrieb:
Dabei wäre jetzt noch interessant welche URL du aufgerufen hast (was in $link gestanden hat).
Wenn ich genau deinen Code verwende:
The requested URL /youtube/http://www.youtube.com/watch?v=fcO9svaOahM was not found on this server.
Du hast ganz bestimmt in deinem $link nicht das stehen was dort hingehört. Dort gehört bei genau meinem code genau die URL hin, also muss es ungefär so aussehen:$link = 'http://www.youtube.com/watch?v=fcO9svaOahM';
-
Es sollte doch die Url nach dem = eingefügt werden, oder hab ich was falsch verstanden?
-
abc124 schrieb:
Du hast dich warscheinlich nicht klar genug ausgedrückt.
Es sollte doch die Url nach dem = eingefügt werden, oder hab ich was falsch verstanden?
Du willst also folgendes (jedenfalls habe ich das jetzt so verstanden):
resultiert in der Ausgabe vonhttp://www.adresse.at/seite.php?video=irgendeinvideo
<iframe width="560" height="315" src="http://www.youtube.com/watch?v=irgendeinvideo" frameborder="0" allowfullscreen></iframe>
Wenn das der Fall ist:<?php $id = $_GET['video']; // hier könntest du prüfen ob $id eine gültige Video-ID ist $url = "http://www.youtube.com/watch?v=$id"; ?> <!-- html-code --> <iframe width="560" height="315" src="<?php echo(urlencode($url)); ?>" frameborder="0" allowfullscreen></iframe> <!-- noch ein bischen html -->
Es würde aber auch so funktionieren:<?php $id = $_GET['video']; // hier könntest du prüfen ob $id eine gültige Video-ID ist ?> <!-- html-code --> <iframe width="560" height="315" src="http://www.youtube.com/watch?v=<?php echo(urlencode($id)); ?>" frameborder="0" allowfullscreen></iframe> <!-- noch ein bischen html -->
Aufrufen kannst du die Seite(n) dann z.B. so:<form method="GET" action="seite.php"> <input type="text" name="video" value="fcO9svaOahM" /> <input type="submit" value="watch!" /> </form>
Wenn das nicht das ist was gemeint war musst du genauere Informationen hergeben. -
Doch, genau das was ich wollte. Aber schau mal:
http://abc124.lima-city.de/ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage