externe website laten lezen uit database
Code (php)
1
2
2
echo '<a href="'."http://website.com/".$row['Naam'].".html".'">
<img src="'."http://website.com/" .$row['Naam'].".jpg".'" ></a>';
<img src="'."http://website.com/" .$row['Naam'].".jpg".'" ></a>';
Ik kan de image ook vanaf mijn site laden:
Code (php)
1
2
2
echo '<a href="'."http://website.com/".$row['Naam'].".html".'">
<img src="'."https://mijneigenwebsite.com/" .$row['Naam'].".jpg".'" ></a>';
<img src="'."https://mijneigenwebsite.com/" .$row['Naam'].".jpg".'" ></a>';
en dan geeft hij niet aan dat het onveilig is, maar het linkt dan nog steeds naar de http site? Ik snap het niet. Waarom is dit wel veilig?
Het gaat om de resources die je laadt. Wanneer je over https laadt moeten al je resources ook https zijn. Links zijn geen resource, en het zou natuurlijk idioot zijn om niet naar http te mogen linken.
Aha, het is dan wellicht nog geen -op maat gemaakte- API geworden maar met mijn -op maat gemaakte- curl ben ik ook heel tevreden.
Deze functie-bibliotheek is ideaal te gebruiken voor het connecten met API's. En dan puur alleen het connecten ermee. Uitlezen doe je voornamelijk met de toegewezen functies voor XML of JSON.
Gewijzigd op 29/01/2017 02:05:43 door - Ariën -
De site waaraan ik de images onttrek heeft basic auth. Het rare is: de rest van de pagina laadt wel (de inhoud van txtfiles met fopen op de curlpagina zie je wel, de databaseinhoud ook) alleen de images uit mn loop dus niet. Daarvan zie je alleen de alttekst en dan volgt het inlogscherm van de website (waar de images staan).
Hoe kan dat nou? Waarom moet je inloggen om de fotos te kunnen zien terwijl de rest wel zichtbaar is?
Dit is mijn curlscript:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
curl_setopt($curl, CURLOPT_USERPWD, "mijninlognaam:mijnwachtwoord");
curl_setopt ($curl, CURLOPT_URL, "https://mijnwebsite.nl/curlpagina.php");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($curl);
// echo curl_error($curl);
curl_close ($curl);
print $result;
curl_setopt ($curl, CURLOPT_URL, "https://mijnwebsite.nl/curlpagina.php");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($curl);
// echo curl_error($curl);
curl_close ($curl);
print $result;
Haal je die plaatjes van je eigen site af?
Code (php)
1
2
2
echo '<a href="'."http://website.com/".$row['Naam'].".html".'">
<img src="'."https://mijneigenwebsite.com/" .$row['Naam'].".jpg".'" ></a>'
<img src="'."https://mijneigenwebsite.com/" .$row['Naam'].".jpg".'" ></a>'
https website met plaatjes en basic auth---->naar http website waar de curlpagina het ophaalt.
Als ik weghaal dan ben ik dat inlogscherm kwijt maar heb ik nog steeds geen plaatjes.
Dat was niet helemaal mijn vraag ... de vraag was of het jouw eigen website is waar die plaatjes vandaan komen, of is die website van een derde?
ja, dat is mijn website
Dan neem ik aan dat je server settings niet per ongeluk dusdanig zijn ingesteld dat ze image-hijacking tegengaan?
Marina janssen op 31/01/2017 23:45:22:
De site waaraan ik de images onttrek heeft basic auth. Het rare is: de rest van de pagina laadt wel (de inhoud van txtfiles met fopen op de curlpagina zie je wel, de databaseinhoud ook) alleen de images uit mn loop dus niet. Daarvan zie je alleen de alttekst en dan volgt het inlogscherm van de website (waar de images staan).
[…]
[…]
Als je afbeeldingen zo rechtstreeks print, mis je hoogstwaarschijnlijk wat responsheaders, bijvoorbeeld:
Verder vermoed ik dat je cURL nog op CURLOPT_BINARYTRANSFER moet zetten.
Ben van Velzen op 29/01/2017 00:10:38:
Het gaat om de resources die je laadt. Wanneer je over https laadt moeten al je resources ook https zijn.
Stel onderstaand bestand staat op http://anderewebsite.nl
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$curl = curl_init();
curl_setopt($curl, CURLOPT_USERPWD, "user:password");
curl_setopt ($curl, CURLOPT_URL, "https://mijnwebsite.nl/curl.php");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//curl_exec ($curl);
$result = curl_exec ($curl);
//echo curl_error($curl);
curl_close ($curl);
print $result;
curl_setopt($curl, CURLOPT_USERPWD, "user:password");
curl_setopt ($curl, CURLOPT_URL, "https://mijnwebsite.nl/curl.php");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//curl_exec ($curl);
$result = curl_exec ($curl);
//echo curl_error($curl);
curl_close ($curl);
print $result;
en in curl.php op https://mijnwebsite.nl staat dit:
Code (php)
1
2
2
echo '<a href="'."http://anderewebsite.nl/".$row['Naam'].".html".'">
<img src="'."img/".$row['Naam'].".jpg".'" title="'.$row['Naam'].'" ></a>';
<img src="'."img/".$row['Naam'].".jpg".'" title="'.$row['Naam'].'" ></a>';
Hoe verloopt het laden van "img/".$row['Naam'].".jpg" als het plaatje staat op anderewebsite.nl? Ik vraag dit omdat ik geen uitroepteken krijg dat dit onveilig is.
Gewijzigd op 03/02/2017 23:40:40 door marina janssen
Klopt, want de website die daadwerkelijk gegevens laat zien is http, geen https. Wat je onder water doet met curl is niet relevant, daar ziet de browser niets van.