Comment faire un proxy.php pour bypass la sécurité AJAX

Statut
N'est pas ouverte pour d'autres réponses.

Grégory

Développeur
Ancien staff
Inscription
14 Novembre 2011
Messages
2 798
Réactions
2 221
Points
25 358
RGCoins
45
Salut à tous,

On se retrouve pour un rapide tutoriel (sans vraiment beaucoup de présentation). Je vais donc vous présenter comment bypass la sécurité AJAX, soit "Access-Control-Allow-Origin" :
Code:
XMLHttpRequest cannot load https://paypal.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

Donc, imaginons j'ai besoin de charger une partie d'un site web, mais ce site web n'est pas ouvert à toute les requête AJAX (et heureusement). Pour bypass cette sécurité on va donc utiliser un proxy.php !

On a besoin de :
  • Un hébergement web
  • Des connaissances
  • Un site à bypass
C'est parti !

On va créer un fichier proxy.php, puis on place ce code à l'intérieur :
PHP:
<?php
if(isset($_GET['url'])){
    $url = $_GET['url'];
    $html = file_get_contents($url);
    echo $html;
}
?>

Ensuite un fichier .htaccess qu'on met dans le même dossier que proxy.php, qui va justement enlever cette sécurité sur son site :
Code:
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
Vous pouvez remplacer l'étoile par un site web, l'étoile autorise tous les sites web à accéder à ce proxy.

Une fois ceci fait vous pouvez donc accéder à la page en accédant à

Votre code AJAX je change pas :)
Code:
$.get('http://votresite.com/proxy.php?url=http://google.com/');
 
Merci du tuto :love:
 
Ce n'est pas vraiment bypass la sécurité AJAX, car justement tu perds tout le coté utile de faire du AJAX: faire des requêtes avec la session/cookies du client.
Mais par contre ça permet effectivement d'accéder à des API ou des sites qui n'autorise pas ce genre de requête :)

2 pistes d'améliorations:
- utiliser cURL, et faire une requête qui semble vraie (user-agent, http-referer, cookies..)
- autoriser des domaines que dans une liste pour éviter ce genre de "faille":
Code:
http://votresite.com/proxy.php?url=http%3A%2F%2Fvotresite.com%2Fproxy.php%3Furl%3Dhttp%3A%2F%2Fgoogle.com
 
Ce n'est pas vraiment bypass la sécurité AJAX, car justement tu perds tout le coté utile de faire du AJAX: faire des requêtes avec la session/cookies du client.
Mais par contre ça permet effectivement d'accéder à des API ou des sites qui n'autorise pas ce genre de requête :)

2 pistes d'améliorations:
- utiliser cURL, et faire une requête qui semble vraie (user-agent, http-referer, cookies..)
- autoriser des domaines que dans une liste pour éviter ce genre de "faille":
Code:
http://votresite.com/proxy.php?url=http%3A%2F%2Fvotresite.com%2Fproxy.php%3Furl%3Dhttp%3A%2F%2Fgoogle.com
Justement, je m'en sert personnellement pour récupérer des images sur screencloud etc, car on peut pas charger le site en ajax ;)

Ensuite c'est un code rapide, donc cURL pour modéliser la requête j'en ai pas besoin ^^
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut