J'essaie de créer une API de base pour mon site Web afin que certains autres sites Web que j'approuve puissent afficher du contenu de mon site. J'ai un script PHP sur mon serveur que les autres sites Web peuvent accéder pour extraire le contenu au format XML. Comment puis-je m'assurer que seulement certains sites Web peuvent accéder à cette page php sur mon serveur?Autoriser seulement certains sites Web à accéder à une page PHP
Répondre
La plupart des API nécessitant un type d'authentification similaire optent pour les clés API. Juste une grande longue chaîne qui est passée dans la requête.
Vous pouvez renforcer cela en résolvant l'adresse IP du domaine et en vérifiant cela par rapport à la requête entrante. Cela est lent et coûteux, donc cachez les recherches IP (mais assurez-vous de les nettoyer car les adresses IP des domaines changent légitimement!)
Autoriser uniquement des utilisateurs spécifiques par adresse IP est assez simple avec .htaccess.
Normalement, vous l'utiliser pour bloquer des adresses IP spécifiques comme celui-ci
Order allow, deny
Deny from 192.168.0.10
Deny from 212.155.
Deny from 1.2.3.4 5.6.7.8 127.0.0.1
Allow from all
Mais vous pouvez aussi l'utiliser pour autoriser l'accès des utilisateurs spécifiques, comme celui-ci
Deny from all
Allow from 1.2.3.4
EDIT: Si vous devez absolument le faire à partir d'un script (après une deuxième lecture attentive de votre question, je pense que vous le faites), alors vous pouvez le faire comme ça.
<?
$allowed[0]="xxx.xxx.xxx.xxx";
$allowed[1]="yyy.yyy.yyy.yyy";
// add as many as you need
if (!in_array($_SERVER['REMOTE_ADDR'],$allowed)) header("HTTP/1.1 403 Forbidden");
?>
Une option simple consisterait à placer les pages dans un répertoire, puis à activer l'authentification HTTP de base. Vous devez attribuer des noms d'utilisateur & aux mots de passe que vous souhaitez accéder au contenu.
Une URL peut encoder le nom d'utilisateur et mot de passe: http://username:[email protected]/ ...
De cette façon, aucun changement sont nécessaires sur votre extrémité au-delà de modifier le fichier .htaccess ou l'extrémité distante, autre que de spécifier une URL légèrement différente . Les noms d'utilisateur et les mots de passe sont transmis en clair sur Internet, vous devez donc décider si ce risque est acceptable.
La façon normale de contourner le fait qu'il est envoyé en clair est soit d'utiliser digest auth au lieu de basic, soit d'utiliser https. L'une ou l'autre solution est acceptable et sécurisée. –
- 1. Autoriser seulement certains utilisateurs à modifier ASPxGridView
- 2. Attendre l'accès à certains sites Web
- 3. Autoriser seulement pdfs à être téléchargées
- 4. comment imprimer seulement une partie d'une page Web dans php
- 5. Gérer plusieurs sites Web à partir d'un domaine
- 6. PHP: Autoriser les utilisateurs à créer des publications avec certains tags
- 7. Comment autoriser plusieurs utilisateurs à accéder à une application ASP.NET sur une même machine?
- 8. Comment accéder à DOM d'une page Web dans QtWebKit?
- 9. Comment puis-je accéder à une page Web intranet à partir de Perl?
- 10. Pourquoi est-ce que je peux seulement obtenir le HTML pour la page d'accueil des sites Web et pas d'autres?
- 11. Connexion à une application Web PHP
- 12. Accéder au contrôle d'une page à partir d'une autre page
- 13. Considérations relatives au référencement/à la page pour les réaménagements de sites Web
- 14. Pourquoi certains sites exigent-ils "www"?
- 15. Comment accéder à l'historique du navigateur?
- 16. PHP servant une page à la fois
- 17. Script de connexion à une page Web
- 18. PDF à la page Web
- 19. Déterminer les sites SharePoint et les sites Web qu'un utilisateur spécifié peut accéder par programme?
- 20. Un service Windows peut-il accéder à des objets de cache dans une page Web?
- 21. Avertissement obsolète seulement dans certains environnements php5?
- 22. Comment accéder à l'emplacement de l'iPhone à partir d'une page Web?
- 23. Mesure lorsque seulement certains éléments de la page ont été chargés
- 24. API Facebook: Comment obtenir l'autorisation 'Autoriser l'accès?' page à afficher?
- 25. Accéder à une valeur de fonction javascript dans PHP?
- 26. Accéder à une session d'une autre application Web
- 27. Différents sites Web sur différents domaines, une application .NET MVC?
- 28. Comment utiliser une variable pour accéder à certains éléments dans un tableau multidimensionnel?
- 29. Autoriser uniquement un serveur à accéder à un fichier sur un lecteur réseau
- 30. sites liés à la sécurité
Encore mieux, combinez l'IP avec une clé publique et un sel secret dans un HMAC (http://en.wikipedia.org/wiki/Hash-based_message_authentication_code). Mais seulement si les IP sont connus pour être statiques. –