2010-08-24 21 views
1

J'ai un ensemble de scripts PHP assis sur plusieurs serveurs clients et je veux obtenir l'adresse mac pour ce serveur afin que je puisse le stocker et déterminer que les scripts PHP ne sont pas utilisés sur un autre serveur.Comment s'assurer que les scripts PHP ne sont utilisés que sur une machine par un client?

Comment puis-je obtenir l'adresse Mac d'un ordinateur en utilisant PHP en quelque sorte?

Existe-t-il un meilleur moyen de déterminer si les scripts PHP sont utilisés sur une machine différente?

Merci à tous

Répondre

1

Je ne pense pas qu'il existe un moyen facile d'obtenir une adresse MAC à partir d'un PC en visite, mais je ne suis pas sûr à ce sujet.

Que diriez-vous d'une manière plus simple: utiliser une session? Affectez juste une session s'il n'y en a pas, vous en aurez une par machine (à moins d'utiliser des navigateurs différents). Vous pouvez verrouiller l'exécution à cela.

Il est pas aussi « parfaitement sûr » que le verrouillage sur MAC, mais va encore un long chemin ...

+0

Je dirais que cette question ne concerne pas le nombre de clients HTTP connectés, mais l'application d'une licence mono-serveur. – Piskvor

+0

Ce n'est pas pour un PC en visite, c'est en fait pour le PC sur lequel les scripts résident. – Abs

+0

Devinez nous avons tapé en même temps. Dans ce cas, vous devriez probablement utiliser un encodeur comme Zend Safeguard ou Nusphere Nucoder pour verrouiller le script sur cette seule machine. – Blizz

2

Jusqu'à ce que vous n'Occultation pas le code, les clients intelligents peuvent leurs fausses adresses mac.

Edit: (Juste une idée simple)

Lorsque vous installez votre application sur la machine de clients, vous devez créer un jeton unique qui appartient à cette machine seulement.

Exemple:

  • Créer un fichier horodatages
  • Installer horodatage
  • emplacements de fichier (grande chance de ne pas la même chose à tous les clients)

Fusionner ces derniers, hachage, stockez alors vérifiez à chaque appel de la page.

+0

Le code PHP est obfusqué. :) J'essaye juste de mettre quelque chose dedans qui arrangera les manuscrits à une machine. – Abs

+0

Pouvez-vous accéder aux machines de vos clients? Je veux dire que vous pouvez mettre quelques données uniques sur la machine, puis le chercher? – fabrik

+0

si je fais cela, c'est quelque chose que je dois faire pour chaque client, j'espérais une solution générique automatisée. – Abs

0

pour depuis longtemps, j'ai utilisé l'outil PHTML Encoder (url http://www.rssoftlab.com/), cet outil peut protéger votre code php et vous pouvez définir une fonction comme "ne fonctionne que sur cette machine". vous devez l'installer en tant qu'extension php. Finalement, c'est une solution pour vous.

Sincères salutations

0

Je pense que la meilleure façon d'y arriver est en générant votre propre algorithme pour les empreintes digitales du serveur, le code qui est utilisé pour créer l'empreinte digitale doit être brouillées pour empêcher l'ingénierie inverse, mais il peut être possible .

créer un algorithme qui ne colle pas à 1 valeur par empreinte, laissez les valeurs varier.

afin que vous puissiez exécuter une commande ping sur un serveur principal, le hachage est ensuite validé.

par exemple

function GenerateFingerPrint($account) //Each machine has a static UNIQUE ID 
{ 
    //Create a fingerprint for the machine and machines location 

    //Post the $account + $fingerprint to MAINSERVER.COM 

    // Get hashed responce 

    //Decode it and validate it to continue with script. 
} 

Mais tout ce code doit être très brouillées en raison de l'ingénierie inverse!

+0

Hmm, que se passe-t-il si la machine client désactive la connectivité Internet pour ce serveur. Les scripts sont inutilisables? – Abs

+0

bien vous pouvez stocker un hachage responce localement qui serait valide pendant 7 jours, alors il aurait besoin d'un revalidate, s'il n'y a pas d'accès internet il a utilisé le hachage du magasin sinon il mettra à jour X fois par jour. HTTPS serait nécessaire! – RobertPitt

1

Si vous souhaitez obtenir l'adresse MAC du serveur Web qui exécute votre code php puis:

system ('ipconfig /all') 

sur les fenêtres et le plus souvent (en fonction de la saveur!)

system('netstat -i') 

ira vous un tas d'informations réseau, y compris l'adresse MAC.

Cependant, je dois vous avertir que si vous arrêtez votre script lorsque les adresses mac ne correspondent pas, vos clients vous détesteront!

Pensez aux circonstances lors d'un changement d'adresse mac et comment l'application d'une nouvelle serait « licence » (non) s'adapter à: -

  • carte réseau brisé est remplacé
  • Software est transféré à un brillant nouveau serveur.
  • L'administrateur système lance un cluster de machine virtuelle flexible.
  • Le logiciel bascule sur une autre machine dans un cluster.
  • Le client trouve un fournisseur d'hébergement meilleur marché/meilleur. Des incidents de désastre et un client essaye de faire fonctionner une autre machine dans un autre centre de données.
  • La machine client possède plusieurs cartes réseau.
+0

Que faire si 'système' est désactivé? – fabrik

+0

Je pensais exactement la même chose à propos de lui en utilisant des adresses mac .. il ne suffit pas fiable et statique pour être réalisable. – RobertPitt

+0

tissu, puis vous demandez à l'utilisateur de mettre à jour sa configuration pour répondre aux besoins de l'application, vous ne pouvez pas répondre à tout. – RobertPitt