Sida 1 av 2
Inkludera extern php-fil
Postat: 2008-09-26 18:18
av Holger
Hej!
Jag vill inkludera en extern PHP-fil på min index-sida.
Jag har alltså en php-fil på en annan server som innehåller echos som matar ut information.
Hur får jag in det på min index-sida?
/Holger
Re: Inkludera extern php-fil
Postat: 2008-09-26 18:38
av tumba25
Kod: Markera allt
include('http://den-andra-domänen.tld/filen.php');
Och sen ser du till att allow_url_include är på.
Men det är ett säkerhetshål i klass med Titanic.
Re: Inkludera extern php-fil
Postat: 2008-09-26 18:56
av Holger
Jag vill ju att echot visas på ett bestämt ställe i TPL-filen, hur gör man det?
Och vad menar du med att det är ett säkerhetshål?
Re: Inkludera extern php-fil
Postat: 2008-09-26 22:46
av tumba25
Först ändrar du i random_more_pics.php
Före
Kod: Markera allt
while($row = $site_db->fetch_array($result)){
Sätter du
Sen ändrar du
Kod: Markera allt
echo " <a href=\"".ROOT_PATH."details.php?image_id=$image_id\"><img src=\"".$thumb_src."\" border=\"1\" alt=\"$image_name\"></a> ";
echo "<b>$image_name</b>\n";
echo "Comments: $image_comments<hr>\n";
till
Kod: Markera allt
$holger_var .= " <a href=\"".ROOT_PATH."details.php?image_id=$image_id\"><img src=\"".$thumb_src."\" border=\"1\" alt=\"$image_name\"></a> ";
$holger_var .= "<b>$image_name</b>\n";
$holger_var .= "Comments: $image_comments<hr>\n";
Du får någonstans i index.php sätta include('random_more_pics.php');
ex efter
Kod: Markera allt
if( ( $total_categories = count($category_rows) ) )
{
Sen efter
Kod: Markera allt
'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
sätter du
Och på lämpligt ställe i tpl-filen
Med säkerhetshål menar jag att det i vissa lägen går att skriva ex:
http://dindomäm.tld/sida.php?mode=http: ... laking.php och med allow_url_include på så includeras glatt det php-skriptet om du inte har säkerhetskoll i dina skript.
På en del ställen ex lekis så finns adressen
http://lekforum.net/index.php?mode=tidszoner&typ=afrika och det är många som i sin index.php sen har något i stil med
Kod: Markera allt
if(isset($_GET['mode']))
{
include($_GET['mode'] . '.php');
}
Och då är det ännu enklare för en elaking att få ditt skript att inkludera något som ger honom all info han behöver för att komma åt din databas. Och du anar inte hur många som har samma användare och lösen till databasen, ftp osv.
Eller så låter han skriptet skriva in ett eget skript i din root-katalog (många anser att det är supersäkert om php har samma användare som den som har webbkontot) och sen lägger han en praktisk include() i ditt loginskript som ekar alla användarnamn och lösenord i klartext till honom.
Re: Inkludera extern php-fil
Postat: 2008-09-27 12:55
av Kail
Tumba beskriver en sk injection attack då filen du inkluderar på detta sätt tolkas av PHP, med andra ord körs. Jag förstår dock inte poängen med det du försöker göra. Om PHP-filen ligger på en annan server kommer PHP-tolken på den maskinen parsa den innan den skickas till dig via webbservern så du kan inte inkludera oparsad PHP på detta sätt såvida den andra webbservern inte skickar koden obearbetad. Om du bara ska inkluderas dess output bör du använda curl för att göra en vanligt HTTP GET och kunna hantera dessa output som en variabel.
Re: Inkludera extern php-fil
Postat: 2008-09-27 13:31
av tumba25
Om php-filen körs på den andra servern eller skickas som den är beror ju på vilka inställningar och moduler som finns där. Om du stänger av php-modulen skickas själva php-filen som den är.
Fast php-filen i första inlägget hämtar en bild. Om det är den som ska köras på den andra servern och skicka tillbaka bilden så kan du göra det med file_get_contents() och behöver inte ha allow_url_include på.
Re: Inkludera extern php-fil
Postat: 2008-09-27 20:54
av Holger
tumba25 skrev:Du får någonstans i index.php sätta include('random_more_pics.php');
Och den får även ligga på en annan server?
Re: Inkludera extern php-fil
Postat: 2008-09-27 21:35
av tumba25
Frågan är ju vad du vill ha.
Vill du att filen ska köras på den andra servern och du egentligen är ute efter resultatet av den körningen så använder du file_get_contens('
http://domän.tld/filen.php');
Vill du att filen ska köras på din server måste du först se till att filen inte körs på den andra servern utan att den skickar själva skriptet. Och sen kan du inkludera den med include('
http://domän.tld/filen.php'); Men om den ska köras på din server kan du ju lika gärna lägga den på din server på en gång.
Re: Inkludera extern php-fil
Postat: 2008-09-28 08:16
av Holger
Nej, den ska köras på den andra servern.
Re: Inkludera extern php-fil
Postat: 2008-09-28 09:06
av Holger
Ska jag använda
Kod: Markera allt
file_get_contens('http://domän.tld/filen.php');
istället för
i beskrivningen ovan?
Re: Inkludera extern php-fil
Postat: 2008-09-28 11:43
av tumba25
Om den ska köras på den andra lägger du bara in.
i index.php efter
Kod: Markera allt
'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
lägger du
Kod: Markera allt
'HOLGER_VAR' => file_get_contents('http://url/filen.php'),
och i tpl-filen
Re: Inkludera extern php-fil
Postat: 2008-09-28 12:56
av Holger
Jag började med att ändra i random_more_pics.php
Kod: Markera allt
define('ROOT_PATH', 'http://www.maskinfotografer.se/');
Resultatet blev dock att {HOLGER_VAR} skapade ett failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error
Re: Inkludera extern php-fil
Postat: 2008-09-28 12:59
av tumba25
Om den ska köras på den andra servern ska du nog inte göra några ändringar i random_more_pics.php.
Re: Inkludera extern php-fil
Postat: 2008-09-28 13:02
av Holger
Då får jag fel sökvägar i resultatet som visas på den andra sidan.
Dvs filen hittas och allt aktiveras och visas, men sökvägarna som är beroende av ROOT_PATH får fnatt.
Re: Inkludera extern php-fil
Postat: 2008-09-28 13:18
av Holger
Det fixade sig genom att jag ersatte alla ROOT_PATH i echona med det riktiga adressen.