Ich habe ein jQuery Plugin entwickelt, das einige Daten anzeigt, die es von einer gesicherten RESTful API erhält. Die API ist durch eine Standardauthentifizierung und ein Token gesichert. Um nicht die grundlegenden Authentifizierungsinformationen noch die Logik Leck das Token zu schaffen, zog ich sie zu einem proxy.php, die im Grunde wie das aussieht:Wie kann man mit JavaScript über einen PHP-Proxy sicher auf eine geschützte API zugreifen?
$url = "http://the-api.com/path";
$context = stream_context_create(
array(
'http' => array(
'header' =>
"Authorization:Basic " . base64_encode("$username:$password") . "\r\n" .
)
)
);
$response = file_get_contents($url, false, $context);
header("content-type: application/json");
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
header("Access-Control-Allow-Methods: GET, OPTIONS");
header('Access-Control-Allow-Headers: X-Requested-With, Origin, Content-Type, Authorization');
return $response;
Es leitet die Anfrage mit den notwendigen Anmeldeinformationen und gibt die Antwort des API. So weit, ist es gut. Die Anmeldeinformationen befinden sich nicht im JavaScript-Code. Andere Leute können jedoch die gleiche Anfrage ausführen, indem sie die proxy.php aufrufen. Wie kann ich überprüfen, dass nur das jQuery Plugin die Proxy.php erfolgreich aufrufen kann? Könnte es durch eine Kombination aus Cookie und Token erfolgen? Die proxy.php befindet sich auf demselben Host/Domain wie das jQuery Plugin.
theres keine Möglichkeit ... –
Sie können schützen, dass Proxy.php nur Ajax Anruf erlaubt. Diese Frage kann Ihnen helfen. http://StackOverflow.com/questions/1393904/ajax-only-access –
Sie können einen Blick auf [Secure ein PHP-Proxy] (https://stackoverflow.com/questions/13440663/secure-a-php -proxy) – ajoposor