PDA

Bekijk Volledige Versie : PHP connecties naar externe servers is door host uitgeschakeld



Jeffrey35
25/03/08, 16:27
Hallo,
Ik ben nieuw op dit forum en zit met een probleem waarvan ik echt niet weet hoe ik het moet oplossen.

-----------------

Op mijn site werken de http requests niet meer. Spamchecks waarbij comments naar een centrale spamcheckserver worden gestuurd werken dus niet meer. Hierdoor is een groot gedeelte van mijn site onbruikbaar geworden. Dit probleem is er nu ongeveer een week. Ik had hier al 2 tickets over geplaatst maar toen werd er verwezen naar het feit dat includes, fopen, en curl niet meer werken. Dit heeft echter niks met de http requests te maken.

function ksd_http_post($request, $host, $path, $port = 80) {
global $ksd_user_agent;

$http_request = "POST $path HTTP/1.0\r\n";
$http_request .= "Host: $host\r\n";
$http_request .= "Content-Type: application/x-www-form-urlencoded; charset=" . get_settings('blog_charset') . "\r\n";
$http_request .= "Content-Length: " . strlen($request) . "\r\n";
$http_request .= "User-Agent: $ksd_user_agent\r\n";
$http_request .= "\r\n";
$http_request .= $request;

$response = '';
if( false !== ( $fs = @fsockopen($host, $port, $errno, $errstr, 3) ) ) {
fwrite($fs, $http_request);
while ( !feof($fs) )
$response .= fgets($fs, 1160); // One TCP-IP packet
fclose($fs);
$response = explode("\r\n\r\n", $response, 2);
}
return $response;
}

Dit is een voorbeeld van een stukje code voor een http request naar een spamserver. Hier zijn dus geen includes of dergelijke in verwerkt. Echter lukt het op mijn site toch niet meer om verbinding te leggen met exterme spamcheck servers terwijl dit eerst wel kon.
Waar zou dit aan kunnen liggen.

Met vriendelijke groet,
Jeffrey Lankamp

2008-03-25 15:00:38
Geplaatst Door: Hosting2GO

Het is op onze machines niet meer mogelijk om externe URL's te 'includen' met Perl of met het PHP commando "fopen" of "curl" (allow_url_fopen). Het betreft hier uitsluitend http includes en connecties met het IRC en MSN netwerk.

Dit is gedaan in verband met de veiligheid van de aanwezige sites op deze servers, en voorkomt dat persoonlijke informatie zoals o.a. passwords makkelijk te verkrijgen is door hackers. Daarnaast kregen wij regelmatig klachten van website beheerders dat content zonder toestemming werd overgenomen en dat er via onze server getracht werd illegale activiteiten te ontplooien gebruikmakend van een Proxy-script (Als PHProxy), om zodoende de identiteit van de surfer te verbergen.

We verontschuldigen ons voor het onwaarschijnlijke geval dat u hinder ondervindt van deze configuratieaanpassing, echter hopen we dat u begrijpt dat deze aanpassing vrijwel uitsluitend voordelen heeft voor de beveiliging op de gehele server, en dat dit door ons ook niet per hostingpakket in te stellen is.

Overigens zijn er wel mogelijkheden om via html externe url's te includen. U doet dat door een zgn. "iframe" op te nemen, met daarin een directe link naar de pagina die u wilt includen. Zodoende loopt de include vanaf de server van de eigenaar zelf, en laadt daarnaast uw website veel sneller. (En het scheelt u dataverbruik).

Het openen van sockets via poort 80 is door de maatregel ook niet meer mogelijk. Wellicht kunt u gebruik maken van poort 81 of 443 voor https communicatie.

Met vriendelijke groet,
Hosting2GO Helpdesk

------------------------

Bovenstaande heb ik dus gestuurd naar Hosting2Go. Maar ik weet niet wat ik nou moet doen om het probleem op te lossen, of dat het wel klopt wat Hosting2Go allemaal zegt.
Zie iemand me kunnen helpen? Dit is mijn website: www.jeflog.nl. Als je naar jeflog.nl/forum gaat en je probeert te registreren zie je het probleem in actie, want dat lukt niet omdat Recaptcha geen verbinding kan leggen met de Recaptcha server.

Groeten,
Jeffrey Lankamp

deCube
25/03/08, 16:31
Voor zover ik weet is fsockopen een onderdeel van fopen....

DutchTSE
25/03/08, 16:34
Precies zoals het er staat.. als fopen() wordt geblokkeerd, dan zal dat voor fwrite() ook wel zijn. Je host heeft dus bepaalde beveiligingsmaatregelen genomen waardoor je site niet meer werkt.

Kun je 2 dingen doen:
- 1. een andere host zoeken die het wel geaccepteerd
- 2. vragen of dit uitgeschakeld kan worden omdat je er last van hebt (en als dat niet kan of je dan je contract kan opzeggen + geld retour)

Jeffrey35
25/03/08, 16:47
Oke, balen zeg. Zijn er meer hosters die dit doen, of is hosting2go een van de weinige. Want phpbb2 en gallery enzo maken standaard gebruik van deze functie's, dus lijkt mij dat het apart is dat ze door hosting2go geblokkeerd zijn. Maar goed, die supportmedewerker heeft het ook over poort 81 en 443. Is dit wat en als ik dat wil proberen wat moet ik dan wijzigen? Hij zegt ook: 'echter hopen we dat u begrijpt dat deze aanpassing vrijwel uitsluitend voordelen heeft voor de beveiliging op de gehele server, en dat dit door ons ook niet per hostingpakket in te stellen is.' Is dit zo? In de reactie op in een ander ticket omtrent de kwestie kwam Hosting2Go hiermee:

"Omdat in sommige gevallen een externe include niet anders kan, bieden we de mogelijkheid om een externe include via een server van ons te doen, door in de include op te nemen:

http://include.hosting2go.nl/include.php?url=http://url.naar.de.include"

Maar ik weet dus echt niet hoe ik dit moet toepassen, mijn kennis van programmeren is namelijk heel erg beperkt.

Groeten,
Jeffrey

Ramon Fincken
25/03/08, 17:05
@Jeffrey, ter info in phpbb2 is fopen() alleen in gebruik voor locale bestanden, het inlezen van avatars op andere servers gebeurd met fsock en fsockopen ( idem voor je admin, het uitlezen van de nieuwste versie )

Jeffrey35
25/03/08, 17:12
@Jeffrey, ter info in phpbb2 is fopen() alleen in gebruik voor locale bestanden, het inlezen van avatars op andere servers gebeurd met fsock en fsockopen ( idem voor je admin, het uitlezen van de nieuwste versie )

Dan heeft het te maken met fsock en fsockopen want daarmee kwam ik er eigenlijk voor de eerste keer achter dat er iets niet goed zat, dat ik niet meer kon zien of ik de nieuwste versie had, nu staat er connection refused.

Maar kan hosting2go niet individueel instellen of ik fsock en fsockopen kan gebruiken?

Groetjes,
Jeffrey

Ramon Fincken
25/03/08, 17:17
Maar kan hosting2go niet individueel instellen of ik fsock en fsockopen kan gebruiken?

Als ze zeggen dat ze het niet doen staat los van de vraag of ze het kunnen.

Ik zou zowiso mailen dat phpbb deze functie gebruikt voor avatars en versiecheck, en ze vragen of er geen webspace bij hun is die dat wel toestaat. Er zijn voor dit soort dingen wel workarounds, maar voor deze omvang nogal omslachtig.

Van gallery kan ik je zo niets zeggen.

Echter van je script dat remote spamcheckt zou ik gewoon even nalopen of je geen javascript / XML / AJAX request hiervoor kunt gebruiken. Maar ook dat is natuurlijk een workaround ..

Deimos
25/03/08, 17:29
Deimos edit: Titel aangepast.

Jeffrey35
25/03/08, 17:31
Ja de omvang is idd nogal groot, want het gaat dus niet alleen om phpbb, maar ook om gallery, en serendipity (weblog software). En en beetje designen en html en javascript kan ik wel, maar verder weet ik gewoon amper wat van php. Dus die workarounds kan ik gewoon niet uitvoeren. In het verleden heb ik wel is het php memorylimit omhoog gezet en dat vond ik al heel wat. Maar goed, dat met die andere ports (81 en 443) kan ik daar niet wat mee? En gebeurt het vaker dat hosts dit soort functie's uitzetten. Want het was ook ineens zonder waarschuwing. En dan zeggen ze het is heel onwaarschijnlijk dat u hinder ondervindt van deze actie. Maar de hele interactiviteit op mijn website is nu weg. En gallery kom ik niet eens meer in want je raad het al, om bij de admin suite te komen moet je eerst langs een Recaptcha. Maar is het in theorie mogelijk om deze instellingen per client te wijzigen. Anders zeg ik wel dat ik ze 20 euro ofzo betaal om die instellingen te wijzigen. Want volgens mij is de service bij hosting2go ook niet alles.

Ramon Fincken
25/03/08, 17:40
Op poort 81 en 443 is http://www.phpbb.com/updatecheck/20x.txt niet te bereiken dus dat valt al af.

of je kan onderhandelen met je huidige host en/of wil verhuizen daar ga ik geen uitspraak over doen. Als je aangeeft in je laatste zin hierboven dat je wellicht niet 100% tevreden bent is dit wel een goed moment om over te stappen.

zie ook post#3
http://www.webhostingtalk.nl/952997-post3.html

Nielsvk
25/03/08, 18:50
http://www.php.net/curl


// Nvm: zie net dat CURL ook niet is toegestaan.

Randy
25/03/08, 19:25
Vreemd, juist Curl is dé juiste manier om externe connecties te maken...

hax0r
25/03/08, 21:59
Oke, balen zeg. Zijn er meer hosters die dit doen, of is hosting2go een van de weinige.

Ik ken er zeker nog een stuk of 10.

Ga er maar vanuit dat binnen een paar jaar amper een webhoster connecten naar buiten toe gaat staan.

Zeker zodra iedereen Google Aps gaat integreren met zijn website, die veel all SSL connecties naar buiten moeten maken, trekken een paar honderd sessies tegelijkertijd elke server onderuit.

Webhosting is het aanbieden van content via de server en niet via de achterkant relayen van traffic. Daarvoor heb je een VPS of Dedicated server.

Het zelfde doet me denken aan klanten die in een shared hosting omgeving perse rechtstreeks vanaf huis met hun mysql client willen kunnen inloggen.

ps: het toestaan van connecties kan leiden tot een veiligheid risico, o.a. XS4all is ooit eens op deze wijze gehacked, waarbij met een netcat reverse connect script een shell werd geopend. Met php is dat makkelijker en boven dien zijn die scripts kan en klaar te vinden.

Mark17
26/03/08, 00:40
Ze gaan dus in wezen een hele grote collectie scripts blokkeren. Als ik het zo lees lijkt het haast alsof ze in de firewall connecties naar buiten op poort 80 hebben geblokkeerd (aangezien het wel via een server van hun kan).

In wezen zouden ze de curl optie relatief veilig toe kunnen staan, wij hebben bijvoorbeeld ook besloten om op een nader te bepalen tijdstip een gedeelte van de shared hosting servers dit te gaan blokkeren (hier zullen klanten overigens voor de tijd van op de hoogte worden gesteld en is overstap naar een server die het wel ondersteund mogelijk).

robj
26/03/08, 17:46
Ik heb hetzelfde probleem met Hosting2GO (waar ik overigens verder wel tevreden over ben). Op mijn Joomla 1.0.15 site werkt de weermodule MambWeather ineens niet meer. Deze haalt elk half uur weerdata (zg metars) op van een externe site. In mijn php zie ik inderdaad fopen en fsockopen commando's staan.

Ik kreeg hetzelfde antwoord van Hosting2GO. Kan ik iets doen met hun suggestie om het met de include
"http://include.hosting2go.nl/include.php?url=http://url.naar.de.include"
te proberen? Dat is me uit deze discussie nog niet duidelijk geworden. Zo ja... hoe dan, want ik ben geen php expert. Mijn code lijkt op die van Jeffrey (zie eerste post).
Ik heb al het een en ander geprobeerd, maar het werkt tot nu tot niet.
Ik hoef eigenlijk alleen maar een extern TXT-bestand in te lezen (nl de weerdata/metars bijvoorbeeld voor vliegveld Deelen: http://weather.noaa.gov/pub/data/observations/metar/stations/EHDL.TXT )

dirk939
27/03/08, 15:07
Ik heb hetzelfde probleem met Hosting2GO (waar ik overigens verder wel tevreden over ben). Op mijn Joomla 1.0.15 site werkt de weermodule MambWeather ineens niet meer. Deze haalt elk half uur weerdata (zg metars) op van een externe site. In mijn php zie ik inderdaad fopen en fsockopen commando's staan.

Indien het alleen binnen php geblokkeerd is, kun je een script maken dat elk half uur wordt aangeroepen en het .txt-bestand downloadt. Vervolgens laat je je php-code de lokale .txt parsen.

robj
29/03/08, 23:38
Beste Dirk, dank voor je advies, maar door mijn relatieve onbekendheid met php kon ik er in eerste instantie niet zoveel mee. Maar inmiddels heb ik, door veel zoekwerk (ook zeer leerzaam) de oplossing gevonden en de zaak werkt weer naar behoren. Aan het advies van de hoster had ik niet zoveel omdat hierdoor de originele code te ingrijpend zou veranderen. Ik haal de informatie nu op met ftp in plaats van http en ik parse de opgehaalde txt string naar een zelfde format als voorheen, waardoor de rest van de code ongewijzigd kan blijven. Nogmaals dank dat je me op het goede spoor hebt gebracht.

Hans
30/03/08, 01:28
Ik heb op onze hostingsystemen soortgelijke maatregelen getroffen, omdat door crackers nogal eens de mogelijkheid gebruikt wordt om naar buiten te verbinden. Zowel om binnen te geraken als om vanaf daar schade bij derden aan te richten. (gelukkig komt deze wijsheid vooral uit onderzoek van exploits en voor slechts 'n klein deel uit praktijkervaring ;))

Om de hinder die klanten hiervan ondervinden te beperken, bieden we wel de mogelijkheid om hier uitzonderingen op te maken. Zo hebben we daarin uitzonderingen staan voor Akismet (WordPress anti-spam systeem), Recaptcha, Mollie en andere websites die een API aanbieden.

De ideale situatie zou natuurlijk zijn dat alles open kan staan, maar dat is tegenwoordig simpelweg niet verstandig meer. De andere kant van het verhaal is dat het voor klanten natuurlijk mogelijk moet zijn om gebruik te maken van externe systemen en informatie, omdat het internet van tegenwoordig steeds meer draait om het uitwisselen van gegevens tussen verschillende websites. Naar mijn idee biedt de aanpak die wij gekozen hebben voldoende mogelijkheden voor klanten en voldoende beveiliging voor de systemen.

Wellicht kan je ook Hosting2Go ertoe bewegen dergelijke uitzonderingen te maken. Websites die een API aanbieden kiezen er namelijk zelf voor dat hun website door geautomatiseerde scripts benaderd wordt.